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

如何通过代码批量更新WooCommerce变体商品价格(乘以1.45)

解决WooCommerce变体商品价格无法按比例调整的问题

我来帮你搞定这个问题!你的原代码只处理了简单商品的价格,原因有两个:一是你用的woocommerce_get_price钩子对变体商品不生效;二是代码里还有个小bug——你先调用了wc_get_product($post_id)但$post_id还没定义,这会导致不必要的错误。

下面是修正后的代码,既能处理简单商品,也能完美调整变体商品的价格:

function adjust_product_price($price, $product) {
    // 只针对简单商品、可变商品父项和变体商品生效
    if (in_array($product->get_type(), array('simple', 'variable', 'variation'))) {
        $price = $price * 1.45;
    }
    return $price;
}

// 处理简单商品和可变商品的基础价格
add_filter('woocommerce_product_get_price', 'adjust_product_price', 10, 2);
// 专门处理变体商品的价格
add_filter('woocommerce_product_variation_get_price', 'adjust_product_price', 10, 2);

代码说明:

  • 钩子选择:我用了WooCommerce官方推荐的woocommerce_product_get_price和woocommerce_product_variation_get_price钩子,这两个钩子分别对应普通商品和变体商品,比旧的woocommerce_get_price兼容性更好,适配最新版本的WooCommerce。
  • 去掉冗余全局变量:直接使用钩子传入的$price和$product参数,不需要调用全局$post,代码更简洁安全。
  • 产品类型过滤:添加了商品类型判断,确保只调整我们需要的商品价格,避免意外影响运费、税费等其他价格场景。

如果你的商品还有销售价需要同步调整,可以再加上这两个钩子:

add_filter('woocommerce_product_get_sale_price', 'adjust_product_price', 10, 2);
add_filter('woocommerce_product_variation_get_sale_price', 'adjust_product_price', 10, 2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:16:37