2016-12-16 7 views
2

Я пытаюсь сделать простой код скидки для 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 - Conditional Progressive Discount based on number of items in cart

Ссылка: WooCommerce class - WC_Cart - add_fee() method

+0

Ого, вот на самом деле полезно. Большое спасибо! –

+0

Есть ли способ показать скидку в корзине? –

+0

Скидка отображается только на моей странице выписки, в корзине указанная цена является полной ценой без скидки. –

 Смежные вопросы

  • Нет связанных вопросов^_^