根据 Woocommerce 中的产品类别添加到购物车的最大商品数量
Max item quantity added to cart based on product category in Woocommerce
我正在尝试自定义商店,使名为 Quantity4 的类别仅允许将 4 件商品添加到购物车中,而名为 Quantity6 的类别仅允许将商品添加到购物车中。
据我所知,这可以使用嵌套的 if
语句来实现,但不知何故这不起作用。
add_filter( 'woocommerce_add_to_cart_validation', 'only_four_items_allowed_add_to_cart', 10, 3 );
function only_four_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {
$cart_items_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_items_count + $quantity;
if(has_term('quantity4','product_cat',$product_id )){
if($cart_items_count >= 4 || $total_count > 4){
// Set to false
$passed = false;
// Display a message
wc_add_notice( __( "You Chose a Box of 4 Items, Can't Add More", "woocommerce" ), "error" );
}
}
else if (has_term('quantity6','product_cat',$product_id )){
if($cart_items_count >= 6 || $total_count > 6){
// Set to false
$passed = false;
// Display a message
wc_add_notice( __( "You Chose a Box of 6 Items, Can't Add More", "woocommerce" ), "error" );
}
}
return $passed;
}
有人可以指出我在这里做错了什么以及如何获得预期的结果。
我已经稍微重新访问了您的代码,它正在运行。请试试这个:
add_filter( 'woocommerce_add_to_cart_validation', 'only_four_items_allowed_add_to_cart', 10, 3 );
function only_four_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {
$cart_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_count + $quantity;
if ( has_term( 'quantity4','product_cat',$product_id ) && ( $cart_count >= 4 || $total_count > 4 ) ) {
$passed = false; // Set to false
$notice = __( "You Chose a Box of 4 Items, Can't Add More", "woocommerce" ); // Notice to display
}
elseif ( has_term( 'quantity6','product_cat',$product_id ) && ( $cart_count >= 6 || $total_count > 6 ) ) {
$passed = false; // Set to false
$notice = __( "You Chose a Box of 6 Items, Can't Add More", "woocommerce" ); // Notice to display
}
if( ! $passed )
wc_add_notice( $notice, 'error' );
return $passed;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。
已测试并有效。
我正在尝试自定义商店,使名为 Quantity4 的类别仅允许将 4 件商品添加到购物车中,而名为 Quantity6 的类别仅允许将商品添加到购物车中。
据我所知,这可以使用嵌套的 if
语句来实现,但不知何故这不起作用。
add_filter( 'woocommerce_add_to_cart_validation', 'only_four_items_allowed_add_to_cart', 10, 3 );
function only_four_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {
$cart_items_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_items_count + $quantity;
if(has_term('quantity4','product_cat',$product_id )){
if($cart_items_count >= 4 || $total_count > 4){
// Set to false
$passed = false;
// Display a message
wc_add_notice( __( "You Chose a Box of 4 Items, Can't Add More", "woocommerce" ), "error" );
}
}
else if (has_term('quantity6','product_cat',$product_id )){
if($cart_items_count >= 6 || $total_count > 6){
// Set to false
$passed = false;
// Display a message
wc_add_notice( __( "You Chose a Box of 6 Items, Can't Add More", "woocommerce" ), "error" );
}
}
return $passed;
}
有人可以指出我在这里做错了什么以及如何获得预期的结果。
我已经稍微重新访问了您的代码,它正在运行。请试试这个:
add_filter( 'woocommerce_add_to_cart_validation', 'only_four_items_allowed_add_to_cart', 10, 3 );
function only_four_items_allowed_add_to_cart( $passed, $product_id, $quantity ) {
$cart_count = WC()->cart->get_cart_contents_count();
$total_count = $cart_count + $quantity;
if ( has_term( 'quantity4','product_cat',$product_id ) && ( $cart_count >= 4 || $total_count > 4 ) ) {
$passed = false; // Set to false
$notice = __( "You Chose a Box of 4 Items, Can't Add More", "woocommerce" ); // Notice to display
}
elseif ( has_term( 'quantity6','product_cat',$product_id ) && ( $cart_count >= 6 || $total_count > 6 ) ) {
$passed = false; // Set to false
$notice = __( "You Chose a Box of 6 Items, Can't Add More", "woocommerce" ); // Notice to display
}
if( ! $passed )
wc_add_notice( $notice, 'error' );
return $passed;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。
已测试并有效。