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

如何为未登录用户隐藏WooCommerce Barn2商品表的促销价格列

问题原因

你使用的woocommerce_product_get_sale_price过滤器仅适用于WooCommerce原生调用价格的场景,Barn2 WooCommerce Product Table的自定义字段列默认直接读取数据库存储的_sale_price元字段,不会触发该钩子,因此代码不生效。

解决方案

根据你的需求可选择以下任意一种实现:

方案1:未登录用户完全隐藏“SALE PRICE”列

使用Barn2官方提供的表格列过滤器wc_product_table_columns实现,代码如下:

add_filter( 'wc_product_table_columns', function( $columns ) {
    // 请将代码中的sale_price替换为你自定义SALE PRICE列的实际键名
    if ( ! is_user_logged_in() && isset( $columns['sale_price'] ) ) {
        unset( $columns['sale_price'] );
    }
    return $columns;
} );

注:自定义列的键名可在后台产品表配置的自定义列设置项中查询。

方案2:保留列结构,未登录用户仅隐藏列内价格内容

使用自定义列内容输出过滤器wc_product_table_custom_column_value实现,代码如下:

add_filter( 'wc_product_table_custom_column_value', function( $value, $column, $product ) {
    // 请将代码中的sale_price替换为你自定义SALE PRICE列的实际键名
    if ( $column === 'sale_price' && ! is_user_logged_in() ) {
        // 可返回空,也可填写自定义提示文本如“登录后查看价格”
        return '';
    }
    return $value;
}, 10, 3 );

以上代码添加到当前主题的functions.php文件或自定义代码片段插件中即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:06