2017-02-27 34 views
2

我有一個WooCommerce網站,通過點擊一個按鈕或鏈接指向/cart/網址並附加查詢字符串?add-to-cart=7&quantity=1 。就像這樣:如何從WooCommerce網址中刪除數量參數

http://example.com/cart/?add-to-cart=7&quantity=7

數量add-to-cart=7是產品的ID,很明顯,quantity=1是產品的添加到購物車的數量。

這一切工作正常。

問題是,用戶在購物車屏幕時可能決定增加或減少數量。當他們點擊「更新購物車」時,數量會隨着數量網址參數值的增加而遞增或遞減。

因此,如果網址參數中的quantity=7和用戶在購物車UI中將數量增加1並點擊「更新購物車」,則突然數量是15而不是8.這是因爲它將原始數量值顯示爲7在購物車UI中,爲購物車UI更新添加1,然後從quantity URL參數中添加7。

防止這種情況發生的最好方法是什麼?當用戶第一次訪問該頁面時,是否需要從會話中刪除URL參數?我甚至從哪裏開始做這件事?我開始寫一個過濾器,但我顯然不知道自己在做什麼。

// Correct the updated quantity by subtracting out the URL parameter already passed from the product page 
function filter_woocommerce_cart_item_quantity($product_quantity, $cart_item_key, $cart_item) {  
    if(isset($_REQUEST['quantity']) && ($_REQUEST['quantity'] != "")) { 
     $product_url_param_qty = $_REQUEST['quantity'] 
     $product_quantity = $product_quantity - $product_url_param_qty 
    } 
    return $product_quantity;  
};  
      
// add the filter  
add_filter('woocommerce_cart_item_quantity', 'filter_woocommerce_cart_item_quantity', 10, 3); 

回答

0

這裏是我開始對這項工作的代碼:

// Correct the updated quantity by subtracting out the URL parameter already passed from the product page 
function filter_woocommerce_cart_item_quantity($product_quantity, $cart_item_key, $cart_item) { 
    if(isset($_REQUEST['quantity']) && ($_REQUEST['quantity'] != "")) { 
     $product_url_param_qty = $_REQUEST['quantity']; 
     $product_quantity = abs($product_quantity - $product_url_param_qty); 
    } 
    return $product_quantity; 
}; 

// add the filter 
add_filter('woocommerce_cart_item_quantity', 'filter_woocommerce_cart_item_quantity', 10, 3);