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

WooCommerce与Measurement Price Calc:隐藏价格区间,显示“从€x.xx起”

适配Measurement Price Calculator的可变产品价格显示修改

看起来你已经搞定了普通可变产品的价格区间隐藏,但碰到MPC插件的定价表就掉链子了——这很常见,因为MPC有自己的价格渲染逻辑,默认的可变产品价格钩子覆盖不到它。

先回顾下你可能用的基础代码(如果和你的不一样,直接替换成你的核心逻辑就行):

// 原普通可变产品价格修改
add_filter('woocommerce_variable_price_html', 'custom_variable_price', 10, 2);
function custom_variable_price($price, $product) {
    $min_price = $product->get_variation_price('min', true);
    return sprintf(__('从 %s 起', 'woocommerce'), wc_price($min_price));
}

问题出在:这段代码只拦截了WooCommerce默认的可变产品价格输出,但MPC插件渲染定价表时,用了专属的钩子woocommerce_measurement_price_calculator_price_html,所以你的修改在定价表里不生效。

下面是适配MPC的完整解决方案,同时兼顾普通可变产品和MPC定价表的显示:

// 同时处理普通可变产品和MPC插件的价格显示
add_filter('woocommerce_variable_price_html', 'custom_variable_price_mpc_compatible', 20, 2);
add_filter('woocommerce_measurement_price_calculator_price_html', 'custom_variable_price_mpc_compatible', 20, 2);

function custom_variable_price_mpc_compatible($price, $product) {
    // 只针对可变产品处理
    if (!$product->is_type('variable')) {
        return $price;
    }

    // 获取产品最低可变价格
    $min_price = $product->get_variation_price('min', true);

    // 检查是否启用了MPC插件且当前产品配置了测量定价
    if (class_exists('WC_Measurement_Price_Calculator') && $product->get_meta('_measurement_price_calculator_enabled')) {
        // 获取MPC的单位价格和单位(比如"元/米")
        $unit_price = $product->get_meta('_measurement_price_calculator_unit_price');
        $price_unit = $product->get_meta('_measurement_price_calculator_unit');

        // 如果有单位价格,显示带单位的"从X起"格式
        if ($unit_price && $price_unit) {
            $price = sprintf(__('从 %s/%s 起', 'woocommerce'), wc_price($unit_price), $price_unit);
        } else {
            // 回退到普通最低价格显示
            $price = sprintf(__('从 %s 起', 'woocommerce'), wc_price($min_price));
        }
    } else {
        // 普通可变产品的处理逻辑
        $price = sprintf(__('从 %s 起', 'woocommerce'), wc_price($min_price));
    }

    return $price;
}

关键说明:

  1. 双钩子覆盖:同时挂钩默认可变价格钩子和MPC专属钩子,优先级设为20(高于默认优先级,确保你的修改能覆盖插件和主题的默认输出)
  2. MPC专属判断:通过检查MPC类是否存在、产品是否启用测量定价,来区分处理逻辑——如果是MPC产品,优先显示带单位的起始价格
  3. 兼容性:保留了普通可变产品的原有逻辑,不会影响未使用MPC的产品

注意事项:

  • 把这段代码加到子主题的functions.php里,别直接改父主题,避免主题更新丢失修改
  • 测试不同场景:带MPC的可变产品、普通可变产品,确保价格显示符合预期
  • 清除WooCommerce缓存(WooCommerce → 状态 → 工具 → 清除缓存)和浏览器缓存,确保修改生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:00:17