如何从 WooCommerce 中删除数量参数 URL

How to remove quantity parameter from WooCommerce URL

我有一个 WooCommerce 网站,通常通过单击按钮或 link 将产品添加到购物车,其中 URL 指向 /cart/ URL 加上查询字符串 ?add-to-cart=7&quantity=1。像这样:

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

数字 add-to-cart=7 是产品的 ID,显然,quantity=1 是要添加到购物车的产品数量。

一切正常。

问题是用户在购物车屏幕中可能会决定增加或减少数量。当他们单击 "Update Cart" 时,无论数量 URL 参数设置的值如何,数量都会增加或减少。

所以如果 URL 参数中的 quantity=7 并且用户将购物车中的数量增加 1 UI 并点击 "Update Cart",突然数量变成 15 而不是比 8。那是因为它采用购物车 UI 中显示的原始数量值 7,为购物车 UI 更新添加 1,然后添加 quantity [=39] 中的 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 );

这是我为此工作的代码:

// 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 );