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

如何将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或数据库命令行工具运行以下语句,即可快速完成批量修改,操作前务必提前备份数据库:

  1. 批量修改库存数量为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');
  1. 批量修改库存状态为缺货
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:02