Я ищу правильный крючок в WooCommerce, потому что мне нужно добавить рекламный продукт в корзину, когда достигнут определенный объем корзины, например 100 условных единиц.
Я также использовал hook 'init'
но я не думаю, что это правильно.
Вот мой код:
function add_free_product_to_cart(){ global $woocommerce; $product_id = 2006; $found = false; if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) { foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; if ( $_product->id == $product_id ) $found = true; } if(!$found) { $maximum = 100; $current = WC()->cart->subtotal; if($current > $maximum){ $woocommerce->cart->add_to_cart( $product_id ); } } } } add_action( 'woocommerce_add_to_cart', 'add_free_product_to_cart' );
какой крючок я должен использовать для этой цели?
Или вы могли бы дать мне ссылку на какую-то аналогичную проблему?
благодаря
Поскольку вы нацеливаете определенную сумму корзины на добавление рекламного продукта в корзину, вы можете использовать
woocommerce_before_calculate_totals
для достижения этой цели с помощью специальной функции.
Вы также должны удалить этот промо-элемент, если клиент обновит корзину (которая также встроена в эту пользовательскую функцию) .
Вот код:
add_action( 'woocommerce_before_calculate_totals', 'adding_promotional_product', 10, 1 ); function adding_promotional_product( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $promo_id = 99; // <=== <=== <=== Set HERE the ID of your promotional product $targeted_cart_subtotal = 100; // <=== Set HERE the target cart subtotal $has_promo = false; $subtotal = 0; if ( !$cart_object->is_empty() ){ // Iterating through each item in cart foreach ($cart_object->get_cart() as $item_key => $item_values ){ // If Promo product is in cart if( $item_values['data']->id == $promo_id ) { $has_promo = true; $promo_key= $item_key; } else { // Adding subtotal item to global subtotal $subtotal += $item_values['line_subtotal']; } } // If Promo product is NOT in cart and target subtotal reached, we add it. if( !$has_promo && $subtotal >= $targeted_cart_subtotal ) { $cart_object->add_to_cart($promo_id); echo 'add'; // If Promo product is in cart and target subtotal is not reached, we remove it. } elseif( $has_promo && $subtotal < $targeted_cart_subtotal ) { $cart_object->remove_cart_item($promo_key); } } }
Этот код переходит в файл functions.php вашей активной дочерней темы (или темы) или в любом файле плагина.
Этот код проверен и работает.
Связанная ветка: WooCommerce – Автоматическое добавление или автоматическое удаление продукта из корзины
Код обновлен (2017-04-19)