Woocommerce — добавьте бесплатный подарок за каждую сумму X, потраченную в выбранных категориях. ⇐ Php
Woocommerce — добавьте бесплатный подарок за каждую сумму X, потраченную в выбранных категориях.
В нашем магазине Woocommerce мы хотим дарить покупателям бесплатный подарок за каждые 50 долларов США, потраченные в выбранных категориях. Ниже приведен наш код в файле function.php, он работает, но недостаточно хорошо.
Проблема, с которой мы сталкиваемся сейчас, заключается в том, что когда покупатель тратит 50,50, 51 или 52 доллара, Woocommerce не добавляет бесплатный подарок в корзину. Вместо этого Woocommerce добавит его только в том случае, если сумма немного больше, например 57 долларов США или больше, или когда количество дополнительных товаров превышает целевую сумму в 50 долларов США.
Текущая проблема кода заключается в том, что он не срабатывает и не добавляет 1 бесплатный подарок при достижении целевого показателя расходов в 50 долларов США.
Пожалуйста, помогите
``` // Бесплатный подарок — автоматическое добавление в корзину // add_action('woocommerce_before_calculate_totals', 'freegift_q12024', 10, 1); функция freegift_q12024($cart_object){ глобальный $woocommerce; if (is_admin() &&! определено('DOING_AJAX')) возвращаться; $category_slug=array('categoryA', 'categoryB', 'categoryC', 'categoryD', 'categoryE', 'categoryF'); // Слизни категорий $product_gifted_id=54657; // Идентификатор подарочного продукта $gift_on_spent=50; // Каждые X траты $total_gift=0; $total_gift_exits=0; $total_sub_gift=0; $cart_items_total = 0; // Инициализация foreach ($cart_object->get_cart() as $key => $cart_item) { if ( has_term($category_slug, 'product_cat', $cart_item['product_id'])) { if($cart_item['product_id']!=$product_gifted_id){ $total_sub_gift=$total_sub_gift+$cart_item['line_total']; } if($cart_item['product_id']=$product_gifted_id){ $total_gift_exits=$cart_item['количество']; } } } если($total_sub_gift>0){ $total_gift=floor(($total_sub_gift/$gift_on_spent)); } если($total_gift_exits!=$total_gift){ $product_gifted_cart_id = WC()->cart->generate_cart_id($product_gifted_id); $product_gifted_in_cart = WC()->cart->find_product_in_cart($product_gifted_cart_id); если ($product_gifted_in_cart) { WC()->cart->remove_cart_item($product_gifted_in_cart); } $product_cart_id = WC()->cart->generate_cart_id($product_gifted_id); if( ! WC()->cart->find_product_in_cart($product_cart_id) ){ if ($total_gift>0){ WC()->cart->add_to_cart($product_gifted_id,$total_gift);} } } если($total_gift>0){ foreach ($cart_object->get_cart() as $key => $cart_item) { if($cart_item['product_id']==$product_gifted_id){ $cart_item['data']->set_price(0); $cart_item['data']->set_regular_price(0); } } } } // Бесплатный подарок — отключить удаление из корзины // add_filter('woocommerce_cart_item_remove_link', 'freegift_q12024_noremovefromcart', 20, 2); функция freegift_q12024_noremovefromcart($button_link, $cart_item_key){ //УСТАНОВИТЕ ЗДЕСЬ идентификаторы ваших конкретных продуктов $targeted_products_ids = массив (54657); // Получаем текущий товар в корзине $cart_item = WC()->cart->get_cart()[$cart_item_key]; // Если целевой товар находится в корзине, мы удаляем ссылку на кнопку if( in_array($cart_item['data']->get_id(), $targeted_products_ids)) $button_link = ''; вернуть $button_link; } ``` Приведенный выше код работает — он автоматически добавит бесплатный подарок, но проблема в том, что он не добавляется автоматически при точной цели в 50 долларов США, и для инициализации требуется больше расходов или количества предметов (что является проблема)
В нашем магазине Woocommerce мы хотим дарить покупателям бесплатный подарок за каждые 50 долларов США, потраченные в выбранных категориях. Ниже приведен наш код в файле function.php, он работает, но недостаточно хорошо.
Проблема, с которой мы сталкиваемся сейчас, заключается в том, что когда покупатель тратит 50,50, 51 или 52 доллара, Woocommerce не добавляет бесплатный подарок в корзину. Вместо этого Woocommerce добавит его только в том случае, если сумма немного больше, например 57 долларов США или больше, или когда количество дополнительных товаров превышает целевую сумму в 50 долларов США.
Текущая проблема кода заключается в том, что он не срабатывает и не добавляет 1 бесплатный подарок при достижении целевого показателя расходов в 50 долларов США.
Пожалуйста, помогите
``` // Бесплатный подарок — автоматическое добавление в корзину // add_action('woocommerce_before_calculate_totals', 'freegift_q12024', 10, 1); функция freegift_q12024($cart_object){ глобальный $woocommerce; if (is_admin() &&! определено('DOING_AJAX')) возвращаться; $category_slug=array('categoryA', 'categoryB', 'categoryC', 'categoryD', 'categoryE', 'categoryF'); // Слизни категорий $product_gifted_id=54657; // Идентификатор подарочного продукта $gift_on_spent=50; // Каждые X траты $total_gift=0; $total_gift_exits=0; $total_sub_gift=0; $cart_items_total = 0; // Инициализация foreach ($cart_object->get_cart() as $key => $cart_item) { if ( has_term($category_slug, 'product_cat', $cart_item['product_id'])) { if($cart_item['product_id']!=$product_gifted_id){ $total_sub_gift=$total_sub_gift+$cart_item['line_total']; } if($cart_item['product_id']=$product_gifted_id){ $total_gift_exits=$cart_item['количество']; } } } если($total_sub_gift>0){ $total_gift=floor(($total_sub_gift/$gift_on_spent)); } если($total_gift_exits!=$total_gift){ $product_gifted_cart_id = WC()->cart->generate_cart_id($product_gifted_id); $product_gifted_in_cart = WC()->cart->find_product_in_cart($product_gifted_cart_id); если ($product_gifted_in_cart) { WC()->cart->remove_cart_item($product_gifted_in_cart); } $product_cart_id = WC()->cart->generate_cart_id($product_gifted_id); if( ! WC()->cart->find_product_in_cart($product_cart_id) ){ if ($total_gift>0){ WC()->cart->add_to_cart($product_gifted_id,$total_gift);} } } если($total_gift>0){ foreach ($cart_object->get_cart() as $key => $cart_item) { if($cart_item['product_id']==$product_gifted_id){ $cart_item['data']->set_price(0); $cart_item['data']->set_regular_price(0); } } } } // Бесплатный подарок — отключить удаление из корзины // add_filter('woocommerce_cart_item_remove_link', 'freegift_q12024_noremovefromcart', 20, 2); функция freegift_q12024_noremovefromcart($button_link, $cart_item_key){ //УСТАНОВИТЕ ЗДЕСЬ идентификаторы ваших конкретных продуктов $targeted_products_ids = массив (54657); // Получаем текущий товар в корзине $cart_item = WC()->cart->get_cart()[$cart_item_key]; // Если целевой товар находится в корзине, мы удаляем ссылку на кнопку if( in_array($cart_item['data']->get_id(), $targeted_products_ids)) $button_link = ''; вернуть $button_link; } ``` Приведенный выше код работает — он автоматически добавит бесплатный подарок, но проблема в том, что он не добавляется автоматически при точной цели в 50 долларов США, и для инициализации требуется больше расходов или количества предметов (что является проблема)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Получить общую сумму, потраченную пользователем за определенный диапазон дат в WooCommerce.
Anonymous » » в форуме Php - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получить общую сумму, потраченную пользователем за определенный диапазон дат в WooCommerce.
Anonymous » » в форуме Php - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как изменить, какие продукты отображаются в разных категориях в WOOCOMMERCE?
Anonymous » » в форуме Php - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-