You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce添加指定ID商品时清空购物车的实现方法

实现方法

woocommerce_add_cart_item_data钩子默认支持传入3个参数,你原有代码只声明了第一个参数,没有接收代表当前加购商品ID的第二个参数,所以无法做商品维度的判断。
该钩子的回调参数说明:

  • 第一个参数$cart_item_data:购物车项的自定义元数据,即原有逻辑里的返回值
  • 第二个参数$product_id:当前正在被加入购物车的商品主ID,是实现指定商品判断的核心参数
  • 第三个参数$variation_id:如果加购的是可变商品的变体,该参数传递变体ID,普通商品传0

你只需要在回调函数里判断当前$product_id是否等于目标商品ID(需求中为ID=1),匹配时再执行wc_empty_cart()清空购物车即可,修改后的完整代码如下:

// 仅指定ID的商品加入购物车时,先清空原有购物车内容
add_action( 'woocommerce_add_cart_item_data', function( $cart_item_data, $product_id ) {
    // 定义需要触发清空逻辑的目标商品ID
    $target_product_id = 1;
    // 仅当当前加购商品为目标商品时,执行清空操作
    if ( (int)$product_id === $target_product_id ) {
        wc_empty_cart();
    }
    return $cart_item_data;
}, 10, 2 );

注意:add_action的最后一个参数2必须填写,作用是告知WordPress要给回调函数传递2个参数,否则无法正常获取$product_id的值,判断逻辑会失效。

上述代码实现的效果完全匹配需求:

  • 加购ID为1的商品时,自动清空购物车内之前的所有商品,再添加当前商品,支持任意数量添加
  • 加购其他ID的商品时,不会触发清空购物车逻辑,完全遵循WooCommerce默认加购流程

内容的提问来源于stack exchange,提问作者Rob Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:51:27