首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cart -Woocommerce中覆盖现有产品的产品数量

在cart -Woocommerce中覆盖现有产品的产品数量
EN

Stack Overflow用户
提问于 2017-12-05 09:56:42
回答 1查看 4.6K关注 0票数 2

我已经试了很多,试图超越现有的产品数量,但没有。

实际上,我有这样的代码:

代码语言:javascript
复制
add_action('woocommerce_add_to_cart', 'add_to_cart_qty', 10, 6 );
function add_to_cart_qty( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ){

    $real_product_id = $variation_id > 0 ? $variation_id : $product_id;

    $product = wc_get_product($real_product_id);
    $product_stock = $product->get_stock_quantity();

    // Zero or negative stock (remove the product)
    if( $product_stock <= 0 && $product->get_manage_stock() ){
        WC()->cart->remove_cart_item( $cart_item_key );
        return;
    }

    if( $quantity > $product_stock && $product->get_manage_stock() ){
        WC()->cart->set_quantity( $cart_item_key, $product_stock );
    }
}

这设置了产品添加到购物车时的最大可用产品数量。但是,当客户更改商品数量…时,我也需要在购物车页面中操作。

我认为我们可以用两种方式来处理这个问题:

  • 首先,我们要删除添加到同一产品的购物车上的产品,该产品已经在购物车中。
  • 第二种方法是在添加到同一产品的购物车上更新现有产品的数量,这也适用于可变产品。

我已经尝试了很多不同的代码片段,但没有结果。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-05 19:26:27

使用此自定义函数挂在woocommerce_after_cart_item_quantity_update动作钩子中,将避免客户在更新购物车项目数量时添加超过产品库存数量的内容:

代码语言:javascript
复制
add_action('woocommerce_after_cart_item_quantity_update', 'update_cart_items_quantities', 10, 4 );
function update_cart_items_quantities( $cart_item_key, $quantity, $old_quantity, $cart ){
    $cart_data = $cart->get_cart();
    $cart_item = $cart_data[$cart_item_key];
    $manage_stock = $cart_item['data']->get_manage_stock();
    $product_stock = $cart_item['data']->get_stock_quantity();

    // Zero or negative stock (remove the product)
    if( $product_stock <= 0 && $manage_stock ){
        unset( $cart->cart_contents[ $cart_item_key ] );
    }
    if( $quantity > $product_stock && $manage_stock ){
        $cart->cart_contents[ $cart_item_key ]['quantity'] = $product_stock;
    }
    return $product_stock;
}

代码在您的活动子主题(或活动主题)的function.php文件中,或者在任何插件文件中。

这段代码是经过测试的,甚至对产品变体也是有效的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47650649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档