如何为WooCommerce购物车中已存在的商品添加自定义数据?
WooCommerce购物车已有商品添加自定义数据解决方案
当目标商品已存在于购物车时,你需要遍历购物车条目找到对应商品,直接更新其自定义数据并保存会话,以下是补充完整的代码:
if( in_array( $res[0], array_column( WC()->cart->get_cart(), 'product_id' ) ) ) { // 遍历购物车,匹配目标商品 foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { if( $cart_item['product_id'] == $res[0] ) { // 写入自定义数据 $cart_item['field_wrap_name'] = $custom_data['field_wrap_name']; $cart_item['field_wrap_img'] = $custom_data['field_wrap_img']; // 可选:如果需要增加商品数量,取消注释下面一行 // $cart_item['quantity'] += 1; // 更新购物车会话,保存更改 WC()->cart->cart_contents[ $cart_item_key ] = $cart_item; WC()->cart->set_session(); break; // 找到目标商品后终止循环 } } } else { WC()->cart->add_to_cart($res[0], '1', '0', array(), $custom_data ); }
关键说明
- 确保
$custom_data变量包含field_wrap_name和field_wrap_img两个字段,结构与添加新商品时一致 - 若不需要增加商品数量,可删除数量递增的代码行
set_session()方法用于将购物车的修改同步到会话,避免刷新页面后更改丢失
内容的提问来源于stack exchange,提问作者Dias
相关产品推荐
相关产品推荐

