我有一个WooCommerce网站,通常点击按钮或带有指向/cart/
网址的网址,并在其上添加查询字符串?add-to-cart=7&quantity=1
,将产品添加到购物车中。像这样:
http://example.com/cart/?add-to-cart=7&quantity=7
数字add-to-cart=7
是产品的ID,显然,quantity=1
是要添加到购物车的产品数量。
一切正常。
问题是用户在购物车屏幕中可能决定增加或减少数量。当他们点击"更新购物车"时,数量会按数量URL参数的值设置的增量增加或减少。
因此,如果网址参数中的quantity=7
和用户在购物车用户界面中将数量增加1并点击"更新购物车",则数量突然为15而不是8.那么&#39 ; s因为它采用购物车UI中显示的原始数量值7,为购物车UI更新添加1,然后从quantity
网址参数添加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 :(得分: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 );