woocommerce_add_to_cart_validation add_filter() 后产品未添加到购物车

Product not adding in cart after add_filter() on woocommerce_add_to_cart_validation

我有一个场景,其中未登录的用户只能在他的购物车中添加 1 个产品。我在 woocommerce_add_to_cart_validation 上添加了一个过滤器,它与 $woocommerce->cart->cart_contents_count>0 一起工作正常,即它显示通知 You cannot add another product to your cart.0 但是,如果我这样做 $woocommerce->cart->cart_contents_count>1 页面只是刷新而不向购物车添加任何东西。 下面是我的自定义函数。

if(!is_user_logged_in()):
add_filter( 'woocommerce_add_to_cart_validation', 'woocommerce_add_cart_myfunction' );

function woocommerce_add_cart_myfunction( $cart_item_data ) {

    global $woocommerce;

$numberOfProducts=$woocommerce->cart->cart_contents_count;
    if($numberOfProducts > 1){
         wc_add_notice(
                     __( 'You cannot add another product to your cart.'.$numberOfProducts, 'woocommerce' ));
                return false;
    } 

}
endif;

您需要return购物车项目数据,如果产品数量只有1:

function woocommerce_add_cart_myfunction( $cart_item_data ) {

    $numberOfProducts = WC()->cart->cart_contents_count;
    if ( $numberOfProducts > 1 ) {
         wc_add_notice(
                     __( 'You cannot add another product to your cart.'.$numberOfProducts, 'woocommerce' ));
         return false;
    }

    return $cart_item_data;

}