Скидка в корзине на основе количества товаров в корзине и только для товаров, которых нет в продаже

В WooCommerce я хотел бы дать скидку 10% специально на те товары, которые не продаются. Если количество товаров в корзине составляет 5 и более штук, а не в продаже, тогда я даю скидку 10%.

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

add_action('woocommerce_cart_calculate_fees' , 'add_custom_fees');

/**
* Add custom fee if more than three article
* @param WC_Cart $cart
*/

function add_custom_fees( WC_Cart $cart ){
if( $cart->cart_contents_count < 5 ){
return;
}
// Calculate the amount to reduce
$discount = $cart->subtotal * 0.1;
$cart->add_fee( '10% discount', -$discount);
}

Но я не знаю, как применить скидку только на товары, которых нет в продаже. Как мне этого добиться?

Благодарю.

5

Решение

Вот пользовательская подключаемая функция, которая будет применяться к корзине скидка, если в корзине 5 или более товаров и нет товаров в продаже:

add_action('woocommerce_cart_calculate_fees' , 'custom_discount', 10, 1);
function custom_discount( $cart ){

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

// Only when there is 5 or more items in cart
if( $cart->get_cart_contents_count() >= 5):

// Initialising variable
$is_on_sale = false;

// Iterating through each item in cart
foreach( $cart->get_cart() as $cart_item ){
// Getting an instance of the product object
$product =  $cart_item['data'];

// If a cart item is on sale, $is_on_sale is true and we stop the loop
if($product->is_on_sale()){
$is_on_sale = true;
break;
}
}

## Discount calculation ##
$discount = $cart->subtotal * -0.1;

## Applied discount (no products on sale) ##
if(!$is_on_sale )
$cart->add_fee( '10% discount', $discount);

endif;
}

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

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

4

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

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

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