簡體   English   中英

使用woocommerce_add_to_cart_validation掛鈎時禁用頁面重新加載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM