[英]Disable shopping when an item from a specific product category is in cart in Woocommerce
I am trying to Disable shopping if a an item from a specific product category is in cart (which is a subscription in form of product with tabs - checkout and shipping are stripped off).如果来自特定产品类别的商品在购物车中(这是带有标签的产品形式的订阅 - 结帐和运输被剥离),我正在尝试禁用购物。 When that product is added to cart, no other products should be allowed to be add up.当该产品添加到购物车时,不允许添加其他产品。
I have tried those threads code:我试过这些线程代码:
But didn't helped.但没有帮助。
How can I disable shopping if a specific product category is in cart on Woocommerce?如果特定产品类别在 Woocommerce 的购物车中,如何禁用购物?
October 2018 - Improved updated code version: 2018 年 10 月 - 改进的更新代码版本:
Disable other product categories for a cart item from specific category in Woocommerce 禁用 Woocommerce 中特定类别的购物车项目的其他产品类别
Try the following code, that will:尝试以下代码,它将:
The code:编码:
// Remove other items when our specific product is added to cart
add_action( 'woocommerce_add_to_cart', 'remove_other_products_on_add_to_cart', 10, 6 );
function remove_other_products_on_add_to_cart ( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ){
// HERE set your product category (can be term IDs, slugs or names)
$category = 'posters';
// We remove other items when our specific product is added to cart
if( has_term( $category, 'product_cat', $product_id ) ) {
foreach( WC()->cart->get_cart() as $item_key => $cart_item ){
if( ! has_term( $category, 'product_cat', $cart_item['product_id'] ) ) {
WC()->cart->remove_cart_item( $item_key );
}
}
}
}
// Avoid other items to be added to cart when our specific product is in cart
add_filter( 'woocommerce_add_to_cart_validation', 'check_and_limit_cart_items', 10, 3 );
function check_and_limit_cart_items ( $passed, $product_id, $quantity ){
// HERE set your product category (can be term IDs, slugs or names)
$category = 'posters';
// We exit if the cart is empty
if( WC()->cart->is_empty() )
return $passed;
// CHECK CART ITEMS: search for items from product category
foreach ( WC()->cart->get_cart() as $cart_item ){
if( has_term( $category, 'product_cat', $cart_item['product_id'] ) ) {
// Display an warning message
wc_add_notice( __('A subscription is already in cart (Other items are not allowed in cart).', 'woocommerce' ), 'error' );
// Avoid add to cart
return false;
}
}
return $passed;
}
Code goes in function.php file of your active child theme (or active theme).代码位于活动子主题(或活动主题)的 function.php 文件中。 Tested and works.测试和工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.