【问题标题】:Disable page reloading when using woocommerce_add_to_cart_validation hook使用 woocommerce_add_to_cart_validation 挂钩时禁用页面重新加载
【发布时间】:2018-10-24 08:32:17
【问题描述】:

当您将产品添加到购物车时,用户会填写字段,当您单击“添加到订单”按钮(这实际上是添加到购物车)时,会检查字段(为了清楚起见,我简化了这个到 if 条件($a === 1))。

我使用woocommerce_add_to_cart_validation钩子的函数是:

function so_validate_add_cart_item($true){
  $a = 1;
  if( $a === 1){
    $true = 0;
    return $true;
  }

}

一切正常,没有添加服务,但是页面重新加载了。

默认$true = 1,但也尝试返回false,页面超载。

如何不完全停止页面重新加载,但在一定条件下并且在这个钩子中是可取的?

【问题讨论】:

    标签: php wordpress validation woocommerce hook-woocommerce


    【解决方案1】:

    使用woocommerce_add_to_cart_validation 过滤钩子时,您无法避免页面重新加载

    使用woocommerce_add_to_cart_validation过滤钩有2种情况:

    1) 允许添加到购物车:您返回默认的过滤器挂钩参数(true):

    add_filter( 'woocommerce_add_to_cart_validation', 'filter_add_to_cart_validation', 10, 3 );
    function filter_add_to_cart_validation( $passed, $product_id, $quantity ) {
        $a = 0; // <===
    
        if( $a === 1 ){
            $passed false; // Avoiding add to cart
    
            // (Optional) Display a custom eror notice
            wc_add_notice( __('Alert message: "add to cart avoided"', 'woocommerce' ), 'error' );
        }
        return $passed;
    }
    

    对于 ajax 添加到购物车,产品将被添加到购物车(默认情况下)而不重新加载。

    正常加入购物车,默认情况下将产品加入购物车并重新加载页面。


    2) 避免添加到购物车: IF 语句中的条件匹配,过滤器挂钩参数设置为 false 并返回(可选您可以显示错误信息):

    add_filter( 'woocommerce_add_to_cart_validation', 'filter_add_to_cart_validation', 10, 3 );
    function filter_add_to_cart_validation( $passed, $product_id, $quantity) {
        $a = 1;
    
        // Any other value for $a than "1" will allow add to cart
        if( $a === 1){
            $passed false; // Avoid add to cart
    
            // (Optional) Display a custom eror notice
            wc_add_notice( __('Alert message: "add to cart avoided"', 'woocommerce' ), 'error' );
        }
        return $passed;
    }
    

    对于 ajax 添加到购物车,客户将被重定向到单个产品页面(避免添加到购物车)。

    对于正常加入购物车,页面将默认重新加载(避免加入购物车)。


    避免页面重新加载的唯一可能方法是使用自定义 (Ajax) jQuery 脚本,这意味着您应该构建自己的验证功能。

    【讨论】:

    • 好的,如果 a = 1 则如何禁用页面刷新?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多