2016-12-14 8 views

ответ

4

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

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

Вот код:

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) 
} 

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

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

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

+0

sir.as like My coupon code is "MAX500", если кто-то применил этот код купона, тогда они получат 20% скидку от $ 500 до $ 2500, а если общая сумма корзины составляет более $ 2500, тогда клиент скидывается до $ 500 , Пожалуйста, обратитесь к этому вопросу и объясните мне по этому вопросу. –

+0

@RaviShankar Извините, но в вашем вопросе вы не спрашивали об этом, поэтому, пожалуйста, так как этот ответ является хорошим, связанным с вашим вопросом, принять его ... После этого я видел ваш новый вопрос, это именно то, что вы просите меня здесь в своем комментарии, и я постараюсь ответить на него. Но для купонов все гораздо сложнее, сделать так, как вам хотелось бы, и может быть невозможно таким образом. – LoicTheAztec