如何将WooCommerce所有商品(含变体)批量清零库存设置为缺货
WooCommerce批量将所有商品(含变体)库存设为0的解决方案
方法1:自定义代码片段临时运行(最稳妥,无额外工具依赖)
操作前请先备份网站数据库,避免误操作无法恢复。将以下代码添加到当前主题的functions.php文件末尾,访问一次网站首页后立即删除这段代码即可完成所有库存修改:
// 批量将所有商品(含变体)库存设为0并标记缺货 add_action('init', 'batch_set_all_products_stock_to_zero'); function batch_set_all_products_stock_to_zero() { // 查询所有已发布的简单商品、可变商品变体 $args = array( 'post_type' => array('product', 'product_variation'), 'posts_per_page' => -1, 'post_status' => 'publish' ); $products = get_posts($args); foreach ($products as $post) { $product = wc_get_product($post->ID); // 设置库存为0 $product->set_stock_quantity(0); // 标记为缺货状态 $product->set_stock_status('outofstock'); // 保存修改 $product->save(); } // 可取消注释下方代码,运行后查看处理数量,确认无误后再删除整段代码 // wp_die('处理完成,共更新'.count($products).'件商品库存,请立即删除这段代码'); }
- 如果商品数量多出现执行超时,可将
posts_per_page的值改为500,分多次运行即可
方法2:直接执行SQL语句(适合熟悉数据库操作的用户)
通过phpMyAdmin或数据库命令行工具运行以下语句,即可快速完成批量修改,操作前务必提前备份数据库:
- 批量修改库存数量为0
UPDATE wp_postmeta SET meta_value = 0 WHERE meta_key = '_stock' AND post_id IN (SELECT ID FROM wp_posts WHERE post_type IN ('product', 'product_variation') AND post_status = 'publish');
- 批量修改库存状态为缺货
UPDATE wp_postmeta SET meta_value = 'outofstock' WHERE meta_key = '_stock_status' AND post_id IN (SELECT ID FROM wp_posts WHERE post_type IN ('product', 'product_variation') AND post_status = 'publish');
- 注意:如果你的数据库表前缀不是默认的
wp_,请将语句中的wp_postmeta、wp_posts替换为你实际使用的表名
方法3:WooCommerce自带导出导入功能(无代码基础可用)
- 进入WooCommerce商品列表页,点击顶部「导出」按钮,选择导出字段包含库存数量、库存状态,导出全量商品CSV文件
- 用表格工具打开CSV文件,批量将库存数量列全部填0,库存状态列全部填
outofstock后保存文件 - 返回商品列表页点击「导入」按钮,上传修改后的CSV文件,勾选「更新现有商品」选项,执行导入即可
- 该方法原生支持可变商品的变体库存批量修改,导出文件会自动包含所有变体条目
内容的提问来源于stack exchange,提问作者Pushprajsinh Chudasama
相关产品推荐
相关产品推荐

