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

WooCommerce Measurement Price Calculator 仅在「自定义尺寸」变体下显示计算器

核心问题定位

你之前编写的所有功能代码完全没有触达目标流程:

  • 挂载的所有钩子全部作用于WooCommerce价格文本的渲染输出,和Measurement Price Calculator(以下简称MPC)的前端表单加载、加购参数校验逻辑完全无关
  • 判断逻辑没有关联用户选中的变体属性值,仅判断父产品的全局MPC开关状态,自然没法区分不同尺寸变体的计算需求
    这也是为什么你之前修改代码后完全没有生效的原因。
适配需求的可直接运行代码

把下面代码追加到主题的functions.php文件中即可:

// 拦截MPC内部的计算器启用判断逻辑,按变体尺寸属性控制开关
add_filter( 'wc_price_calculator_is_enabled', function( $is_enabled, $product ) {
    // 兼容插件未启用场景,避免PHP报错
    if ( ! class_exists( 'WC_Price_Calculator_Product' ) ) {
        return $is_enabled;
    }

    // 仅对产品变体做自定义判断,其他产品类型保留原有MPC逻辑
    if ( $product->is_type( 'variation' ) ) {
        // 获取当前变体绑定的属性配置
        $variation_attrs = $product->get_variation_attributes();
        // 读取Dimension属性的选中值,兼容大小写、属性命名的不同存储格式
        $current_dimension = $variation_attrs['attribute_dimension'] ?? '';

        // 非「Custom size」的固定尺寸变体,强制关闭MPC计算器
        if ( strtolower( trim( $current_dimension ) ) !== 'custom size' ) {
            return false;
        }
    }

    // 匹配到自定义尺寸变体时,保留原有MPC配置的判断结果
    return $is_enabled;
}, 10, 2 );

注意:如果你的「Dimension」属性使用的是全局分类法(比如属性slug为pa_dimension),需要把代码中读取属性的键名attribute_dimension替换为你实际的属性slug即可。

效果说明
  • 当用户选中「170 x 240」这类固定尺寸变体时,MPC会直接识别到计算器被关闭,不会渲染尺寸输入表单,也不会触发“缺少宽度、缺少长度”的加购校验错误,产品可以正常加入购物车
  • 当用户选中「Custom size」变体时,MPC会按照产品原有的配置正常加载尺寸计算组件,按尺寸计价的逻辑完全不受影响
  • 所有逻辑基于插件本身提供的官方过滤器实现,不需要修改MPC插件的核心文件,后续插件版本更新不会导致代码失效

你之前写的那段用于修改价格HTML的代码,仅能影响带计算器产品的前端价格显示,既不能控制计算器组件的加载,也无法绕过加购时的参数校验逻辑,完全达不到需求效果,可以直接从functions.php中移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 13:15:03