【发布时间】:2017-07-18 17:11:49
【问题描述】:
我有一个 WooCommerce 网站,通常通过单击一个按钮或带有指向 /cart/ URL 的 URL 的链接将产品添加到购物车,并在其上附加查询字符串 ?add-to-cart=7&quantity=1。像这样:
http://example.com/cart/?add-to-cart=7&quantity=7
数字add-to-cart=7 是产品的ID,显然quantity=1 是要添加到购物车的产品数量。
一切正常。
问题是用户在购物车屏幕中可能决定增加或减少数量。当他们单击“更新购物车”时,无论数量 URL 参数的值设置为多少,数量都会增加或减少。
所以如果 URL 参数中的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 );
【问题讨论】:
标签: wordpress filter woocommerce hook url-parameters