Прогрессивная скидка на основе общей суммы в WooCommerce

Я пытаюсь автоматически применить 3 разных кода купона в WooCommerce Cart.

Вот мой код!

add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );

function apply_matched_coupons() {
global $woocommerce;

$coupon_code5 = '5percent';
$coupon_code10 = '10percent';
$coupon_code55 = '15percent';

if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;

if ( $woocommerce->cart->cart_contents_total >= 50 && $woocommerce->cart->cart_contents_total < 100 && $woocommerce->cart->cart_contents_total != 100 ) {

$woocommerce->cart->add_discount( $coupon_code5 );

} elseif ($woocommerce->cart->cart_contents_total >= 100 && $woocommerce->cart->cart_contents_total < 150 && $woocommerce->cart->cart_contents_total != 150 ) {

$woocommerce->cart->add_discount( $coupon_code10 );

} else {

$woocommerce->cart->add_discount( $coupon_code15 );
}

}

Этот код, кажется, работает при добавлении 5-процентной скидки, но когда я превышаю 100 евро, скидка 10% не применяется.

Он просто продолжает применять 5-процентную скидку.

ОБНОВИТЬ:

Этот код работает как шарм. Кредит идет в LouicTheAztek

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

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

$cart_total = $cart_object->cart_contents_total; // Cart total

if ( $cart_total > 150.00 )
$percent = 15; // 15%
elseif ( $cart_total >= 100.00 && $cart_total < 150.00 )
$percent = 10; // 10%
elseif ( $cart_total >= 50.00 && $cart_total < 100.00 )
$percent =  5; // 5%
else
$percent = 0;

if ( $percent != 0 ) {
$discount =  $cart_total * $percent / 100;
$cart_object->add_fee( "Discount ($percent%)", -$discount, true );
}
}

1

Решение

Использование нескольких купонов с разной скидкой в ​​корзине это кошмар, с которым вы должны справиться, когда клиент добавляет новые товары, удаляет товары, меняет количество и добавляет (или удаляет) купоны…

Вам лучше использовать этот простой код ниже, который добавит скидку на корзину на основе общей суммы корзины (Здесь мы используем отрицательную плату, которая является скидкой):

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

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

$cart_total = $cart_object->cart_contents_total; // Cart total

if ( $cart_total > 150.00 )
$percent = 15; // 15%
elseif ( $cart_total >= 100.00 && $cart_total < 150.00 )
$percent = 10; // 10%
elseif ( $cart_total >= 50.00 && $cart_total < 100.00 )
$percent =  5; // 5%
else
$percent = 0;

if ( $percent != 0 ) {
$discount =  $cart_total * $percent / 100;
$cart_object->add_fee( "Discount ($percent%)", -$discount, true );
}
}

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

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

1

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

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

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