如何覆盖购物车中已有的现有数量?

时间:2014-11-10 18:47:29

标签: php wordpress woocommerce

我在这里遇到的问题是人们进入产品页面,设置他们想要该产品的数量并添加到购物车(而不是将他们带到购物车页面)。如果客户希望对该产品进行进一步更改,客户希望能够返回商店/产品页面(老实说,这很奇怪,因为他们可以在购物车页面上执行此操作,但无论如何)。但是,当人们在产品页面上更新数量时,不会更新数量,而是会增加该产品的现有数量。

如何在产品页面上多次提交数量时更新现有数量?有没有我可以利用的woocommerce循环?

1 个答案:

答案 0 :(得分:1)

谢谢大家,我已经挖掘了插件并编写了以下解决方案:

add_action('woocommerce_add_to_cart_handler', 'update_product_in_cart', 11, 2);

function update_product_in_cart($p, $q) {
    global $woocommerce;
    $cartItem = $woocommerce->cart->cart_contents;
    $currentProductId = $q->id;
    $wCart = $woocommerce->cart->get_cart();

    // If cart already exists, and product exists, than remove product, and add the new product to it.
    if ($wCart)
    {
        $cart_item_keys = array_keys($wCart);

        foreach($cart_item_keys as $key)
        {
            foreach($cartItem as $item)
            {
                $productItemId = $item['product_id'];
                if ($productItemId == $currentProductId)
                {
                    // If you want to empty the entire cart...
                    // $woocommerce->cart->empty_cart();
                    // If you want to remove just the product from the cart...
                    $woocommerce->cart->set_quantity($key, 0);
                }
            }
        }
    }
    // This adds the product to the cart...
    return $q;
}

这会添加到functions.php中,基本上,如果购物车中存在产品ID,则会删除产品,并在新产品信息中添加$q的返回。

有魅力!