Добавьте купон на скидку для товаров без скидки по купону
У меня есть корзина Woocommerce, и я успешно добавил скидку "в комплекте", которая позволяет получить скидку в размере 7 долларов США на каждый товар в корзине, если количество корзин составляет 5 или более.
Я также хочу, чтобы купоны были включены для определенных продуктов. но я не хочу ставить свою скидку на пакет и купонную скидку друг на друга.
Вот как я сейчас добавляю скидку на пакет:
add_action( 'woocommerce_cart_calculate_fees','wc_cart_quantity_discount', 10, 1 );
function wc_cart_quantity_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$discount = 0;
$cart_item_count = $cart_object->get_cart_contents_count();
if( $cart_item_count > 4 )
$percent = 25;
$discount -= $cart_object->get_cart_contents_count() * 7;
if( $percent > 0 )
$cart_object->add_fee( __( "Bundle discount", "woocommerce" ), $discount, true);
}
Например:
У меня в корзине 5 товаров, и 1 из них уже уценен купоном со скидкой 35%.
Можно ли сохранить скидку на пакет только для 4 товаров без скидки по купону?
Я не хочу складывать 7 долларов плюс 35%. Я хочу, чтобы купон имел преимущественную силу, если он был применен без потери скидки на остальные мои 4 товара.
1 ответ
Вот подключенный код функции, который добавит скидку на каждую недисконтированную корзину. $7
если в корзине минимум 5 товаров:
add_action( 'woocommerce_cart_calculate_fees','wc_cart_quantity_discount', 10, 1 );
function wc_cart_quantity_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
$cart_total_count = $cart_object->get_cart_contents_count();
$cart_items_count = 0;
// Counting non discounted cart items (by a coupon discount)
foreach( $cart_object->get_cart() as $cart_item_key => $cart_item )
if( $cart_item['line_subtotal'] == $cart_item['line_total'] )
$cart_items_count += $cart_item['quantity'];
if( $cart_total_count > 4 ){
$discount = $cart_items_count * 7;
$cart_object->add_fee( __( "Bundle discount", "woocommerce" ), -$discount, true);
}
}
Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.
Этот код протестирован и работает.