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

咨询:woocommerce_product_get_weight过滤器钩子是否已被弃用?

关于WooCommerce中woocommerce_product_get_weight等钩子的弃用问题及解决方案

一、钩子是否被弃用

明确结论:woocommerce_product_get_weight、woocommerce_product_get_length、woocommerce_product_get_width、woocommerce_product_get_height这几个钩子目前并未被弃用。

它们是WooCommerce为替换旧版woocommerce_product_weight(不带_get_前缀)等已弃用钩子推出的新属性钩子,属于官方认可的产品数据获取标准钩子,当前稳定版本的官方代码参考中也没有标记其为弃用。你遇到的“被弃用”说法,大概率是开发者混淆了旧版不带_get_的钩子与新版带_get_的钩子。

二、你的场景解决方案

你的需求是隐藏单个产品页面的重量、尺寸显示,但保留数值用于运费计算,以下几种方案均适用:

1. 继续使用当前的woocommerce_product_get_*钩子(合法且有效)

既然钩子未被弃用,你当前的代码可以继续使用,示例代码(以隐藏重量为例):

add_filter( 'woocommerce_product_get_weight', 'hide_product_weight_on_single', 10, 2 );
function hide_product_weight_on_single( $weight, $product ) {
    // 仅前台单个产品页面隐藏,后台及其他场景保留数值用于运费计算
    if ( is_product() && ! is_admin() ) {
        return '';
    }
    return $weight;
}

替换对应钩子名称(如woocommerce_product_get_length等)即可处理尺寸信息。

2. 用CSS直接隐藏前端元素(更简单,无需修改PHP)

若不想改动PHP代码,可通过CSS直接隐藏单个产品页面的重量、尺寸元素,完全不影响后台及运费计算的数值:

/* 隐藏单个产品页面的重量和尺寸模块 */
.single-product .product_meta .weight,
.single-product .product_meta .dimensions {
    display: none !important;
}

3. 使用显示控制类钩子(更专注于前端显示逻辑)

若想区分“产品数据本身”与“前端显示”,可使用专门控制显示的钩子,这类钩子仅影响前端输出,不会修改产品实际的重量/尺寸值:

// 隐藏重量的前端显示
add_filter( 'woocommerce_product_display_weight', 'hide_display_weight_on_single', 10, 2 );
function hide_display_weight_on_single( $weight_html, $product ) {
    if ( is_product() && ! is_admin() ) {
        return '';
    }
    return $weight_html;
}

// 隐藏尺寸的前端显示
add_filter( 'woocommerce_product_display_dimensions', 'hide_display_dimensions_on_single', 10, 2 );
function hide_display_dimensions_on_single( $dimensions_html, $product ) {
    if ( is_product() && ! is_admin() ) {
        return '';
    }
    return $dimensions_html;
}

内容的提问来源于stack exchange,提问作者Robin R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:41:10