使用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 脚本,这意味着您应该构建自己的验证功能。