2013-10-09 109 views
0

我想知道是否有可能創建一個if語句,如果客戶沒有添加足夠的數量(數量 - 不是價格)的特定產品類別到他們的訂單,消息顯示他們需要增加更多以避免附加費。我想的東西沿最小訂單金額的線片斷documented hereWoocommerce最小訂單按類別/數量

add_action('woocommerce_checkout_process', 'wc_minimum_order_amount'); 
    function wc_minimum_order_amount() { 
     global $woocommerce; 
     $minimum = 50; 
    if ($woocommerce->cart->total() < $minimum) { 
     $woocommerce->add_error(sprintf('You must have an order with a minimum of %s to place your order.' , $minimum)); 
    } 
} 

任何幫助將不勝感激。

+0

你似乎有了答案已經存在的代碼,所以有什麼問題嗎? – Johan

+0

上述代碼基於貨幣價值計算整個購物車總額 - 我所追求的是來自特定類別的產品的最低數量,而不考慮價格。 – Mike

回答

0

WooCommerce Docs

公衆持股量$ cart_contents_count - 購物車中商品的總數量。

所以,按理說,這應該做你需要的東西:

add_action('woocommerce_checkout_process', 'wc_minimum_order_amount'); 
function wc_minimum_order_amount() { 
    global $woocommerce; 
    $minimum = 50; 
    if ($woocommerce->cart->cart_contents_count < $minimum) { 
     $woocommerce->add_error(sprintf('You must have an order with a minimum of %s to place your order.' , $minimum)); 
    } 
} 
+0

即將到來,但我需要將其限制在特定類別中的產品數量。 – Mike

1

這可以通過使用woocommerce_checkout_processwoocommerce_before_cartWoocommerce Hooks來完成。

因此,在你的主題functions.php file(改姓名類的字符串)添加以下代碼:

add_action('woocommerce_checkout_process', 'wc_minimum_order_amount'); 
add_action('woocommerce_before_cart' , 'wc_minimum_order_amount'); 

function wc_minimum_order_amount() { 

    $minimum = 50; //Qty product 

    if (WC()->cart->cart_contents_count < $minimum) { 

     $draught_links = array(); 

     foreach(WC()->cart->get_cart() as $cart_item_key => $values) { 

      $_product = $values['data']; 

      $terms = get_the_terms($_product->id, 'product_cat'); 

      foreach ($terms as $term) { 
       $draught_links[] = $term->name; 
      } 

     } 

     if (in_array("Name Your category", $draught_links)){ 
      $on_draught = true; 
     }else{ 
      $on_draught = false; 
     } 

     if(is_cart()) { 

      if($on_draught){ 

       wc_print_notice( 
        sprintf('You must have an order with a minimum of %s to place your order, your current order total is %s.' , 
         $minimum , 
         WC()->cart->cart_contents_count 
        ), 'error' 
       ); 

      } 

     } else { 

      if($on_draught){ 

       wc_add_notice( 
        sprintf('You must have an order with a minimum of %s to place your order, your current order total is %s.' , 
         $minimum , 
         WC()->cart->cart_contents_count 
        ), 'error' 
       ); 

      } 

     } 
    } 

} 
+2

請提供有關您的答案的更多信息並描述您的代碼以供下一個用戶使用... – Kiyarash

+0

@Kiyarash我剛剛編輯了答案 –