如何从WooCommerce URL

时间:2017-02-27 22:14:28

标签: wordpress filter woocommerce hook url-parameters

我有一个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 );

1 个答案:

答案 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 );