2015-07-20 146 views
0

我想限制在我的購物車中的產品數量爲6最多。 我的woocommerce設置中的所有產品都是單獨銷售的(不能購買同一產品的倍數)。車限制woocommerce購物車中的物品數量?

eXAMPLE

是否有限制車至6種產品的一種方式?因此,如果用戶添加第7個,則會彈出一個警告「僅限最多6個產品。請從您的購物車中移除產品'?

試着用搜索引擎,但只能找到這個,僅限於一個單一的產品:Need Woocommerce to only allow 1 product in the cart

+0

看看上在http WooCommerce API的get_cart_contents_count鉤:// docs.woothemes.com/wc-apidocs/source-class-WC_Cart.html#338-345 您可以使用它來返回警告信息年齡/價值給客戶。 –

回答

2

這是相同的步驟,您鏈接到其他問題。在驗證過濾器上,檢查購物車內容,如果您的要求不符合,則返回一條消息。如上所述,您確實會使用get_cart_contents_count()來統計購物車中的訂單項數量。

編輯:卸下車empty()檢查

function so_31516355_cap_cart_count($valid, $product_id, $quantity) { 

    if($valid && ($quantity > 6 || intval(WC()->cart->get_cart_contents_count()) > 6 || $quantity + intval(WC()->cart->get_cart_contents_count()) > 6 )){ 
     $valid = false; 
     wc_add_notice('Whoa hold up. You can only have 6 items in your cart', 'error'); 
    } 

    return $valid; 

} 
add_filter('woocommerce_add_to_cart_validation', 'so_31516355_cap_cart_count', 10, 3); 

補充:驗證上車更新

function so_31516355_cap_cart_count_update($valid, $cart_item_key, $values, $quantity) { 
    if($valid && ($quantity > 6 || intval(WC()->cart->get_cart_contents_count()) > 6 || $quantity + intval(WC()->cart->get_cart_contents_count()) > 6 )){ 
     $valid = false; 
     wc_add_notice(__('Whoa hold up. You can only have 6 items in your cart', 'your-plugin'), 'error'); 
    } 

    return $valid; 
} 
add_filter('woocommerce_update_cart_validation', 'so_31516355_cap_cart_count_update', 10, 4); 
+0

嗨,謝謝,對不起,我無法得到這個工作...我可能做錯了什麼。剛剛獲得了空白屏幕。結束購買一個插件。非常感謝您的時間:-) – user2538833

+0

如果您看到空白屏幕,則表示存在拼寫錯誤/語法錯誤,您可以使用[WP_DEBUG](https://codex.wordpress.org/WP_DEBUG)模式來確定錯字的位置。我只是測試過,沒有看到任何調試錯誤,所以你的白色屏幕的來源可能已經在其他地方了。我沒有考慮添加的數量,因此更新了我的答案,並且可以確認它的工作原理。 – helgatheviking

+0

此代碼有效,但存在問題 - **您仍可以在購物車頁面**中更改商品數量,此過濾條件不適用於此。我只是刪除了數量輸入字段(請參閱'woocommerce_cart_item_quantity'過濾器)。或者更好 - 將數量顯示爲數字,而不是HTML輸入字段。 – Marek

相關問題