目前只有一种产品添加到 Woocommerce 购物车中?
Only one currently added product into Woocommerce cart?
我希望 Woocommerce 只允许购物车中有 1 个产品。如果一个产品已经在购物车中并且添加了另一个产品,那么它应该删除前一个产品。
我在网上找到这段代码:
/**
* When an item is added to the cart, remove other products
*/
function custom_maybe_empty_cart( $valid, $product_id, $quantity ) {
if( ! empty ( WC()->cart->get_cart() ) && $valid ){
WC()->cart->empty_cart();
wc_add_notice( 'Only allowed 1 item in cart, please remove previous
item.', 'error' ); // here instead popup notice need to remove prevous added product
}
return $valid;
}
add_filter( 'woocommerce_add_to_cart_validation', 'custom_maybe_empty_cart',
10, 3 );
但似乎并没有如我所愿。它需要自动删除购物车中以前添加的产品,并在购物车中添加最新添加的产品。有人可以告诉我需要在 class 上更新什么才能在最新的 woo 3.3.X 中工作吗?
这在 Woocommerce 3 上完美运行。3.X
add_filter( 'woocommerce_add_to_cart_validation',
'bbloomer_only_one_in_cart', 99, 2 );
function bbloomer_only_one_in_cart( $passed, $added_product_id ) {
global $woocommerce;
// empty cart: new item will replace previous
$woocommerce->cart->empty_cart();
// display a message if you like
wc_add_notice( 'Product added to cart!', 'notice' );
return $passed;
}
这是更紧凑和实际的代码,因为不再需要 global $woocommerce
:
add_filter( 'woocommerce_add_to_cart_validation', 'auto_empty_cart', 20, 3 );
function auto_empty_cart( $passed, $product_id, $quantity ) {
if( WC()->cart->is_empty() ) return $passed; // Exit
WC()->cart->empty_cart();
return $passed;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。
测试并适用于自 2 以来的所有 Woocommerce 版本。6.x
我希望 Woocommerce 只允许购物车中有 1 个产品。如果一个产品已经在购物车中并且添加了另一个产品,那么它应该删除前一个产品。
我在网上找到这段代码:
/**
* When an item is added to the cart, remove other products
*/
function custom_maybe_empty_cart( $valid, $product_id, $quantity ) {
if( ! empty ( WC()->cart->get_cart() ) && $valid ){
WC()->cart->empty_cart();
wc_add_notice( 'Only allowed 1 item in cart, please remove previous
item.', 'error' ); // here instead popup notice need to remove prevous added product
}
return $valid;
}
add_filter( 'woocommerce_add_to_cart_validation', 'custom_maybe_empty_cart',
10, 3 );
但似乎并没有如我所愿。它需要自动删除购物车中以前添加的产品,并在购物车中添加最新添加的产品。有人可以告诉我需要在 class 上更新什么才能在最新的 woo 3.3.X 中工作吗?
这在 Woocommerce 3 上完美运行。3.X
add_filter( 'woocommerce_add_to_cart_validation',
'bbloomer_only_one_in_cart', 99, 2 );
function bbloomer_only_one_in_cart( $passed, $added_product_id ) {
global $woocommerce;
// empty cart: new item will replace previous
$woocommerce->cart->empty_cart();
// display a message if you like
wc_add_notice( 'Product added to cart!', 'notice' );
return $passed;
}
这是更紧凑和实际的代码,因为不再需要 global $woocommerce
:
add_filter( 'woocommerce_add_to_cart_validation', 'auto_empty_cart', 20, 3 );
function auto_empty_cart( $passed, $product_id, $quantity ) {
if( WC()->cart->is_empty() ) return $passed; // Exit
WC()->cart->empty_cart();
return $passed;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。
测试并适用于自 2 以来的所有 Woocommerce 版本。6.x