WooCommerce: автоматическое применение одного и того же купона несколько раз

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

  • каждый раз, когда х товаров в корзине => применить соответствующий купон.

Например :

  • если 3 книги этого автора => -5 € в корзину
  • если 3 дополнительные книги (такие же и другие) того же автора => -5 € дополнительно
  • и т.д. (без ограничений: должно работать, если заказано 3000 книг => -15000 €)

Я использую $ wc-> cart-> add_discount ($ discount), но он возвращает «купон уже применен», так как вторая группа товаров находится в корзине.

Вы знаете, возможно ли это?

Спасибо

1

Решение

Вместо того, чтобы использовать купоны, вам лучше использовать пользовательскую функцию скидок, чтобы это работало:

add_action( 'woocommerce_cart_calculate_fees', 'cart_item_discount_by3', 10, 1 );
function cart_item_discount_by3( $cart_object ) {

if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

// initializing and set variables
$discount = 0;
$by3 = 3; // each 3 item quantity
$dicount_price_by3 = 5; // amout to discount each 3 items quantity

// Iterating through each cart item
foreach( $cart_object->get_cart() as $cart_item ):
// Get the item quantity
$qty = $cart_item["quantity"];
// starting when  quantity is upto 3
if($qty >= $by3):
for($j = $by3, $k = 0; $j <= $qty; $j+=$by3, $k++);
$discount += $dicount_price_by3 * $k;
break;
endif;
endforeach;

// Adding the discount (a negative fee)
if ($discount > 0){
$cart_object->add_fee( __( "Discount quantity", 'woocommerce'), -$discount, true );
# Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false)

// Displaying a custom notice (optional)
wc_clear_notices();
wc_add_notice( __("You get a quantity discount on some items"), 'notice');
}
}

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

Этот код протестирован и работает.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector