2017-01-20 10 views
4

В WooCommerce я бы хотел предоставить скидку 10% специально для тех продуктов, которые не продаются. Если количество товаров в корзине составляет 5 или более предметов, а не в продаже, тогда я даю скидку 10%.Скидка на тележку на основе подсчета товаров и только для товаров, которые не продаются.

Я использую следующий код, чтобы получить скидку, основанную на телегу пункт счета ограничения здесь:

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 < 5){ 
     return; 
    } 
    // Calculate the amount to reduce 
    $discount = $cart->subtotal * 0.1; 
    $cart->add_fee('10% discount', -$discount); 
} 

Но я не знаю, как применить скидку только для товаров, которые не находятся в продаже. Как я могу это достичь?

Спасибо.

+0

'более 5 товаров' равен' $ cart-> cart_contents_count <= 5' – JustOnUnderMillions

+0

У вас есть проблема? Это работает? В чем вопрос, точно? –

+0

Я думаю, что лучше спросить его на Code Review. –

ответ

4

Здесь обычай зацепил функция, которая будет применяться в Корзину скидка, если есть 5 или больше пунктов в корзину и никаких продуктов на продажу:

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

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

    // Only when there is 5 or more items in cart 
    if($cart_object->get_cart_contents_count() >= 5): 

     // Initialising variable 
     $is_on_sale = false; 

     // Iterating through each item in cart 
     foreach($cart_object->get_cart() as $cart_item){ 
      // Getting an instance of the product object 
      $_product = new WC_Product($cart_item['product_id']); 

      // If a cart item is on sale, $is_on_sale is true and we stop the loop 
      if($_product->is_on_sale()){ 
       $is_on_sale = true; 
       break; 
      } 
     } 

     ## Discount calculation ## 
     $discount = $cart_object->subtotal * -0.1; 

     ## Applied discount (no products on sale) ## 
     if(!$is_on_sale) 
      $cart_object->add_fee('10% discount', $discount); 

    endif; 
} 

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

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

+0

Большое спасибо за вашу помощь! – Osman

+0

Всегда приятно Mr. @ LoicTheAztec – mysticalghoul

+0

Как настроить таргетинг на определенную категорию для скидки на тележку? @LoicTheAztec – mysticalghoul