[英]Disable page reloading when using woocommerce_add_to_cart_validation hook
當您將產品添加到購物車時,用戶會填寫字段,然后單擊“添加到訂單”按鈕(這實際上是添加到購物車),將檢查字段(為清楚起見,我將其簡化為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,導致頁面超載。
如何不完全停止頁面重新加載,而是在一定條件下並且希望在此掛鈎中停止頁面重新加載?
使用
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
語句中的條件匹配,filter hook參數設置為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腳本,這意味着您應該構建自己的驗證功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.