При оформлении покупки предоставляется скидка 20% на максимальную сумму

Я хотел бы в корзине woocommerce, чтобы клиенты получали скидку 20%, но я хочу ограничить скидочную сумму, например, до 500 долларов.

Это возможно в WooCommerce?

Благодарю.

2

Решение

Это можно сделать с легкостью, используя woocommerce_cart_calculate_fees ловушка и метод WC_cart add_fee(). Тогда, если вы используете отрицательную плату, она становится СКИДКА.

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

Вот код:

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

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

// Here 20 % of discount
$discount_percent = 0.2;

// Here the max discounted amount
$max_discount = 500;

// Here are some different cart totals
$cart_subtotal_excl_tax = WC()->cart->subtotal_ex_tax;
$cart_subtotal = WC()->cart->subtotal;
$cart_total = WC()->cart->total;

$discount = 0;

// CALCULATION with subtotal excluding taxes
$calculation = $cart_subtotal_excl_tax * $discount_percent;

// Limiting the discount to $max_discount
if ( $calculation > $max_discount ) {
$discount -= $max_discount;
} else {
$discount -= $calculation;
}

$discount_text_output = __( 'Discount (20 %)', 'woocommerce' );

// Adding the discount
$cart_object->add_fee( $discount_text_output, $discount, false );
// Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false)
}

Этот код протестирован и полностью функционален.

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

Замечания: Последний аргумент в add_fee() Метод связан с применением налога или не со скидкой (истина или ложь).

4

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

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

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