WooCommerce动作钩子woocommerce_after_checkout_validation失效

WooCommerce新版块状结账页(checkout)已将请求由wc-ajax转变为wp-json,这使得woocommerce_after_checkout_validation一众钩子彻底失效,我在使用时发现已无法使用,切换为经典页面时又能继续使用。

最终找到了购物车限制、经典结账页与块结账页的限制,可以满足具体需求。

所以应该重新找方式,找一个都能使用的方式,如果你的限制不涉及到结账表单的判断,可以用这个hook:woocommerce_check_cart_items,其实是一个购物车限制。
代码如下:

add_action('woocommerce_check_cart_items',function(){
    global $woocommerce;
    $buyunxu = array(21);
    $cart_products_list = $woocommerce->cart->cart_contents;
    foreach ($cart_products_list as $cart_a_product){//循环购物车中的产品
        $cart_a_product_id = $cart_a_product["product_id"];//产品ID
        $terms = get_the_terms( $cart_a_product_id, 'product_cat' );//产品的分类
        foreach($terms as $term){//循环这个产品的分类
            $term_id = $term->term_id;
            if(in_array($term_id,$buyunxu)){
                wc_add_notice( '错误', 'error' );
                break 2;
            }
        }
    }
});

如果你的限制是结账页面的下单按钮,且限制包含结账表单,那么可以用两个钩子分别进行限制,woocommerce_store_api_checkout_update_customer_from_request是块结账页的限制,而woocommerce_after_checkout_validation是经典结账页的限制,代码如下:

add_action('woocommerce_store_api_checkout_update_customer_from_request',function(){
    wc_add_notice( '错误', 'error' );
});
add_action('woocommerce_after_checkout_validation',function(){
    wc_add_notice( '错误', 'error' );
});
© 版权声明
WWW.ANXKJ.TOP
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容