In WooCommerce possiamo aggiungere un codice di sconto al carrello con AJAX.
Definiamo il seguente codice:
function my_add_to_cart() {
global $woocommerce;
$cart_item_data = array();
$product_id = (int) $_POST['product_id'];
$quantity = (int) $_POST['quantity'];
$variation_id = 0;
$variation = array();
$coupon_code = $_POST['coupon_code'];
WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variation, $cart_item_data );
if( !empty( $coupon_code ) ) {
WC()->cart->add_discount( $coupon_code );
}
wp_send_json( array( 'ok' => true ) );
}
add_action( 'wp_ajax_my_add_to_cart', 'my_add_to_cart' );
add_action( 'wp_ajax_nopriv_my_add_to_cart', 'my_add_to_cart' );
Il codice di sconto influenza il totale del carrello e viene aggiunto dopo il prodotto (se presente). I codici di sconto sono custom post type che possono essere gestiti tramite l'interfaccia amministrativa di WooCommerce e il cui effetto sul carrello e sull'ordine possono essere impostati proprio tramite tale interfaccia.