WP All Import 多仓库库存求和更新WooCommerce商品库存问题求助
问题根因
- 原有代码逻辑不符合需求:当前代码是将商品原有库存与
_custom_stock_placeholder字段值相加,没有读取两个仓库对应的wh1stock、wh2stock字段值,无法实现双仓库库存求和。 - 字段映射逻辑错误:未在WP All Import中正确将XML的两个仓库库存字段导入到商品自定义字段中,代码无法读取到对应仓库的库存数值。
- 缺少库存状态同步:仅更新
_stock字段不同步_stock_status字段,会导致WooCommerce前端库存状态显示异常。
解决方案
1. 替换主题functions.php中的原有代码
使用以下代码替换你之前添加的库存计算代码:
add_action('pmxi_saved_post', 'calculate_total_warehouse_stock', 20, 1); // 优先级设置为20,确保WP All Import完成所有字段导入后再执行库存计算 function calculate_total_warehouse_stock($product_id) { // 读取两个仓库的库存值,强制转换为整数避免字符串拼接错误 $wh1_stock = (int) get_post_meta($product_id, 'wh1stock', true); $wh2_stock = (int) get_post_meta($product_id, 'wh2stock', true); // 计算总库存 $total_stock = $wh1_stock + $wh2_stock; // 更新WooCommerce官方库存字段 update_post_meta($product_id, '_stock', $total_stock); // 同步更新库存状态 $stock_status = $total_stock > 0 ? 'instock' : 'outofstock'; update_post_meta($product_id, '_stock_status', wc_clean($stock_status)); // 若不需要保留两个仓库的单独库存数据,可取消注释以下两行删除冗余字段 // delete_post_meta($product_id, 'wh1stock'); // delete_post_meta($product_id, 'wh2stock'); }
2. 调整WP All Import导入配置
在导入任务的「自定义字段」设置环节,添加两组字段映射:
- 第一组:自定义字段名称填
wh1stock,值选择XML数据源中对应的wh1stock字段 - 第二组:自定义字段名称填
wh2stock,值选择XML数据源中对应的wh2stock字段
注意:不要在导入配置中直接给_stock(WooCommerce默认库存字段)赋值,避免导入值覆盖计算后的总库存。
3. 确认WooCommerce配置
- 检查WooCommerce后台「设置-产品-库存」中「启用库存管理」选项已开启
- 商品级别也需要开启库存管理功能
验证方法
选择单个测试商品,在XML中设置两个仓库的库存为非零数值,执行单次导入测试,导入后查看商品编辑页的库存数值,确认等于两个仓库库存之和即可。
内容的提问来源于stack exchange,提问作者Brendon
相关产品推荐
相关产品推荐

