限制woocommerce购物车中的物品数量?

问题描述:

我想限制在我的购物车中的产品数量为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 您可以使用它来返回警告信息年龄/价值给客户。 –

这是相同的步骤,您链接到其他问题。在验证过滤器上,检查购物车内容,如果您的要求不符合,则返回一条消息。如上所述,您确实会使用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