Intereting Posts
Получение наборов множественного результата с хранимой процедурой в php / mysqli Как я могу сортировать массивы в php с помощью пользовательского алфавита? тестирование POST с использованием phpunit в laravel 4 Мне нужна помощь в изменении регулярного выражения для уценки PHP MediaWiki использует файлы cookie для входа в систему. У вас отключены файлы cookie. Включите их и повторите попытку. Ошибка компиляции: «g ++: ошибка при попытке выполнить« cc1plus »: execvp: нет такого файла или каталога" Загрузка файлов без возникновения ошибок на стороне сервера во время процесса Как разбить URL-адрес на его составные части в PHP? Лучший способ защитить от инъекций mysql и межсайтового скриптинга PHP – найдите, существует ли какое-либо из ключевых слов в массиве в строке Как определить, загружен ли файл PHP через cron / command line codeigniter db-> delete () всегда возвращает true? Преобразование WAV в MP3 с использованием LAME из PHP Как реализовать SSL в Zend MVC PHP / MySQL: Объедините запросы UPDATE?

Добавление рекламного продукта при достижении определенной суммы корзины

Я ищу правильный крючок в 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)