WordPress / WooCommerce — автоматическое добавление нескольких купонов на основе категории

У меня есть купон, который автоматически добавляется в корзину при оформлении заказа. В принципе; если присутствуют категории A и B, примените купон. Если купон применяется, и обе категории больше не присутствуют (клиент удалил товар из корзины), то удалите купон.

Это прекрасно работает, но у меня возникают проблемы с настройкой того, что я на самом деле хочу, что делает шаг вперед:

Если оба товара A и B присутствуют в корзине, примените скидку на КАЖДЫЙ товар A в корзине. так что если у вас есть 5 Продуктов A, примените скидку 5 раз. если клиент затем удаляет один продукт A, то удаляет дополнительный купон, который был применен.

Как бы я этого достиг? Вот текущий код для сопоставления и применения скидки:

global $woocommerce;

//create empty category array for push
$category_array = [];
// coupon code created in wooCommerce to apply
$discount = 'A-bought-with-B';

// start of the loop that fetches the cart items
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {

$_product = $values['data'];
$terms = get_the_terms( $_product->id, 'product_cat' );

// find product categories and push them to the array
foreach ($terms as $term) {
$_categoryid = $term -> name;
$category_name = strtolower( $_categoryid );

// push term name to category array
$category_array[] = $category_name;
}
}

// 01
// A Discount when purchased with B
if ( in_array("A", $category_array) && in_array("B", $category_array) ) {

$woocommerce->cart->add_discount( sanitize_text_field( $discount ) );

} // if categories are not in cart, but the coupon is applied remove it
else if ( !in_array("A", $category_array) || !in_array("B", $category_array) && $woocommerce->cart->has_discount( $sticker_coupon_code )  ) {
$woocommerce->cart->remove_coupon( $discount );
}

1

Решение

Задача ещё не решена.

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

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

По вопросам рекламы [email protected]