Прогрессивная процентная скидка в зависимости от суммы заказа

Я пытаюсь сделать простой код скидки для WooCommerce, который дает вам процентную скидку перед покупкой. Допустим, если вы добавляете продукты на 100 долларов, вы получаете скидку 2%, а если вы добавляете продукты на 250 долларов, вы получаете 4% и т. Д.

Единственное, что я нашел, было это:

// Hook before calculate fees
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 < 3 ){
return;
}

// Calculate the amount to reduce
$discount = $cart->subtotal * 0.1;
$cart->add_fee( 'You have more than 3 items in your cart, a 10% discount has been added.', -$discount);
}

Но не смог заставить его работать с модификацией крюков с ценами.

Как мне этого добиться?

Благодарю.

2

Решение

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

add_action( 'woocommerce_cart_calculate_fees','cart_price_progressive_discount' );
function cart_price_progressive_discount() {

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

$has_discount = false;
$stotal_ext = WC()->cart->subtotal_ex_tax;

// Discount percent based on cart amount conditions
if( $stotal_ext >= 100 && $stotal_ext < 250  ) {
$percent = -0.02;
$percent_text = ' 2%';
$has_discount =true;
} elseif( $stotal_ext >= 250  ) {
$percent = -0.04;
$percent_text = ' 4%';
$has_discount =true;
}
// Calculation
$discount = $stotal_ext * $percent;

// Displayed text
$discount_text = __('Discount', 'woocommerce') . $percent_text;

if( $has_discount ) {
WC()->cart->add_fee( $discount_text, $discount, false );
}
// Last argument in add fee method enable tax on calculation if "true"}

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

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


Аналогичный: WooCommerce — условная прогрессивная скидка в зависимости от количества товаров в корзине

Ссылка: Класс WooCommerce — WC_Cart — метод add_fee ()

2

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

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

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