当来自特定产品类别的商品在 Woocommerce 中的购物车中时禁用购物
Disable shopping when an item from a specific product category is in cart in Woocommerce
如果来自特定产品类别的商品在购物车中(这是带有标签的产品形式的订阅 - 结帐和运输被剥离),我正在尝试禁用购物。当将该产品添加到购物车时,不应允许添加其他产品。
我试过那些线程代码:
- Disable Woocommerce add to cart button if the product is already in cart
- Prevent checkout for cart with specific category
但没有帮助。
如果特定产品类别在 Woocommerce 上的购物车中,我如何禁止购物?
October 2018 - Improved updated code version:
试试下面的代码,它将:
- 当购物车中有特定产品类别的产品时,避免添加到购物车
- 将特定产品类别中的产品添加到购物车时删除其他购物车商品
代码:
// 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;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
如果来自特定产品类别的商品在购物车中(这是带有标签的产品形式的订阅 - 结帐和运输被剥离),我正在尝试禁用购物。当将该产品添加到购物车时,不应允许添加其他产品。
我试过那些线程代码:
- Disable Woocommerce add to cart button if the product is already in cart
- Prevent checkout for cart with specific category
但没有帮助。
如果特定产品类别在 Woocommerce 上的购物车中,我如何禁止购物?
October 2018 - Improved updated code version:
试试下面的代码,它将:
- 当购物车中有特定产品类别的产品时,避免添加到购物车
- 将特定产品类别中的产品添加到购物车时删除其他购物车商品
代码:
// 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;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。