Intereting Posts
PHP preg_match «И» оператор В чем разница между POST и исходным POST в PHP? Большие загрузки файлов с использованием FileReader и php mySql PHP – возвращает значение объекта с пробелом в ключе Создание нового массива из входа Laravel 4 SQLSTATE : Недопустимый номер параметра: количество связанных переменных не совпадает с числом ошибок токенов PHP Regex для строки с буквенно-цифровыми и специальными символами Обновление таблицы из JSON / MYSQL с помощью jQuery Загрузите файл с помощью запроса API PUT отправьте два запроса ajax одновременно в symfony Почему это XSS-атака и как это предотвратить? Загрузите img, не используя кнопку отправки или отмените в PHP и AJAX CakePHP, получение данных для моделей HABTM с использованием условного поиска Как отправить динамическое содержимое электронной почты без задания cron Загрузка XML с помощью SimpleXML не возвращает атрибуты для некоторых элементов

Скидка в зависимости от количества товаров и категорий товаров

Я пытаюсь добавить скидку на обычную корзину на основе минимального количества и категорий элементов корзины.
Я беру код из этого ответа:
Скидка на корзину по счету корзины и только для предметов, которые не продаются

Я внес некоторые изменения, и это мой код:

add_action('woocommerce_cart_calculate_fees' , 'my_custom_discount', 10, 1); function my_custom_discount( $cart_object ){ if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; // Only when there is 4 or more items in cart if( $cart_object->get_cart_contents_count() >= 4): // Defining variables $categories = array('mycategory1','mycategory2'); $has_category = false; // Iterating through each item in cart foreach( $cart_object->get_cart() as $cart_item ){ // Getting an instance of the product object $_product = new WC_Product( $cart_item['product_id'] ); // If a cart item has the category if(has_category($category, $_product)){ $has_category = true; break; } } ## Discount calculation ## $discount = $cart_object->subtotal * -0.03; ## Applied discount (no products on sale) ## if($has_category ) $cart_object->add_fee( '3% discount', $discount); endif; } 

Я не могу заставить его работать.

Что я делаю неправильно и как заставить его работать?

благодаря

Solutions Collecting From Web of "Скидка в зависимости от количества товаров и категорий товаров"

Поскольку категориями продуктов является пользовательская таксономия 'product_cat' вам нужно будет использовать has_term() функцию has_term() (вместо has_category() ) следующим образом:

 add_action('woocommerce_cart_calculate_fees' , 'my_custom_discount', 10, 1); function my_custom_discount( $cart_obj ){ if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; // Only when there is 4 or more items in cart if ( $cart_obj->get_cart_contents_count() > 3): // Set HERE your array of categories (slugs, IDs or names) <== <== <== <== <== $categories = array('mycategory1','mycategory2'); // Initialising variable $has_category = false; // Iterating through each item in cart foreach( $cart_obj->get_cart() as $cart_item ){ // The product ID $product_id = $cart_item['product_id']; // When a cart item is from one defined product categories we set $has_category to true. if ( has_term( $categories, 'product_cat', $product_id ) ) { $has_category = true; break; } } ## Discount calculation ## $discount = $cart_obj->subtotal * -0.03; ## Applied discount (for products (items) of defined product categories) ## if( $has_category ) $cart_obj->add_fee( '3% discount', $discount); endif; } 

Этот код находится в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Этот код проверен и работает для WooCommerce версии 2.6+ и 3.0+