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

如何在最新版Woocommerce中按百分比批量上调含变体的所有商品价格?

我完全懂你这种踩坑的郁闷——想批量给所有商品(包括可变产品的变体)按百分比调价,结果试的SQL不仅没生效还把价格弄成0了,太闹心了。针对最新版WordPress和WooCommerce,我给你两个靠谱的解决方案,你可以根据自己的技术偏好选择:

方案一:安全的SQL批量更新(推荐先备份数据库!)

之前的SQL失效大概率是没关联对表,或者没处理可变产品的变体(变体存在product_variation类型的帖子里,价格存在wp_postmeta的不同字段)。执行前一定要先备份数据库,万一出错能快速恢复。

步骤1:更新常规价格和基础价格

将下面的SQL语句放到数据库管理工具(比如phpMyAdmin)里执行,注意把wp_改成你自己的数据库前缀(如果你的前缀不是默认的):

UPDATE wp_postmeta pm
JOIN wp_posts p ON pm.post_id = p.ID
SET pm.meta_value = ROUND(CAST(pm.meta_value AS DECIMAL(10,2)) * 1.10, 2)
-- 1.10代表涨价10%,如果要降价就改成0.90(降10%),按需调整
WHERE p.post_type IN ('product', 'product_variation')
AND pm.meta_key IN ('_regular_price', '_price');

步骤2:更新促销价格(如果有)

如果你的商品有促销价,执行下面的SQL同步调整:

UPDATE wp_postmeta pm
JOIN wp_posts p ON pm.post_id = p.ID
SET pm.meta_value = ROUND(CAST(pm.meta_value AS DECIMAL(10,2)) * 1.10, 2)
WHERE p.post_type IN ('product', 'product_variation')
AND pm.meta_key = '_sale_price';

步骤3:清除WooCommerce缓存

执行完SQL后,登录WordPress后台,进入WooCommerce > 状态 > 工具,点击「清除产品缓存」,确保新价格立即生效。

方案二:用代码片段(更安全,适合不想碰SQL的用户)

如果你对SQL没信心,用代码片段的方式更稳妥——通过WooCommerce的官方API来修改价格,不会破坏数据结构。

操作步骤:

  1. 安装并激活「Code Snippets」插件(或者直接编辑子主题的functions.php文件)
  2. 添加下面的代码,修改$percentage_increase的值(比如0.10是涨10%,-0.10是降10%):
function bulk_update_product_prices_by_percentage() {
    // 设置价格调整比例,正数涨价,负数降价
    $percentage_increase = 0.10;

    // 获取所有已发布的简单产品和变体
    $args = array(
        'post_type' => array('product', 'product_variation'),
        'post_status' => 'publish',
        'posts_per_page' => -1,
        'fields' => 'ids'
    );

    $products = get_posts($args);

    foreach ($products as $product_id) {
        $product = wc_get_product($product_id);
        if (!$product) continue;

        // 更新常规价格
        $regular_price = $product->get_regular_price();
        if ($regular_price) {
            $new_regular_price = round($regular_price * (1 + $percentage_increase), 2);
            $product->set_regular_price($new_regular_price);
        }

        // 更新促销价格(如果存在)
        $sale_price = $product->get_sale_price();
        if ($sale_price) {
            $new_sale_price = round($sale_price * (1 + $percentage_increase), 2);
            $product->set_sale_price($new_sale_price);
        }

        // 同步基础价格字段
        $product->set_price($product->get_regular_price());

        // 保存产品修改
        $product->save();
    }

    // 清除缓存确保价格生效
    wp_cache_flush();
    wc_delete_product_transients();
}

// 执行函数:访问网站任意页面一次后,立即删除或禁用这一行!
add_action('init', 'bulk_update_product_prices_by_percentage');
  1. 保存并激活代码片段,然后访问网站首页一次(触发函数执行)
  2. 立即禁用或删除这个代码片段,避免每次页面加载都重复执行调价操作
  3. 最后同样去WooCommerce > 状态 > 工具清除产品缓存
重要注意事项
  • 备份优先:不管用哪种方法,先备份数据库是底线!
  • 先测试再批量:可以先修改SQL的WHERE条件,只针对单个产品ID测试,或者在代码里加个判断只处理少数产品,确认没问题再全量执行
  • 如果你用的是自定义数据库前缀,一定要把SQL里的wp_改成你自己的前缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:40:50