2017-01-20 180 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

永遠的快樂@LoicTheAztec先生 – mysticalghoul

+0

如何針對特定類別的購物車折扣? @LoicTheAztec – mysticalghoul

相關問題