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

根据用户组或登录状态显示/隐藏价格后缀文本

解决WooCommerce B2B插件定价后缀显示问题

我在用Code Canyon上code4lifeitalia开发的WooCommerce B2B插件,它支持为不同用户组设置差异化定价。默认状态下所有用户看到的是标准零售价,用户注册账户并加入特定用户组(比如批发客户)后,就能查看优惠的批发价。

我添加了以下代码,给标准定价追加「Retail Price」文本后缀:

function woo_text_after_price( $price ) {
    $price .= ' Retail Price';
    return $price;
}
add_filter( 'woocommerce_get_price_html', 'woo_text_after_price' );
add_filter( 'woocommerce_cart_item_price', 'woo_text_after_price' );

但现在遇到问题:当用户登录后或属于特定用户组时,显示的已经是批发价,这时候不应该再显示「Retail Price」后缀。不清楚如何创建对应的过滤规则,需要帮助。


解决方案

你可以通过判断当前用户是否属于目标B2B用户组,来控制是否添加定价后缀。WooCommerce B2B插件通常会通过用户角色或自定义用户元数据来区分用户组,以下是两种常见场景的实现代码:

场景1:插件使用用户角色区分用户组

假设批发用户对应的角色是wholesale_customer,修改后的代码如下:

function woo_text_after_price( $price ) {
    // 登录且属于批发用户组时,直接返回原价(不加后缀)
    if ( is_user_logged_in() && current_user_can( 'wholesale_customer' ) ) {
        return $price;
    }
    // 非批发用户添加后缀
    $price .= ' Retail Price';
    return $price;
}
add_filter( 'woocommerce_get_price_html', 'woo_text_after_price' );
add_filter( 'woocommerce_cart_item_price', 'woo_text_after_price' );

场景2:插件使用自定义用户元数据区分用户组

如果插件通过自定义字段存储用户组信息,假设元键为b2b_user_group,批发用户对应的值为wholesale,代码如下:

function woo_text_after_price( $price ) {
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        $user_group = get_user_meta( $current_user->ID, 'b2b_user_group', true );
        // 属于批发用户组时,不添加后缀
        if ( $user_group === 'wholesale' ) {
            return $price;
        }
    }
    // 非批发用户添加后缀
    $price .= ' Retail Price';
    return $price;
}
add_filter( 'woocommerce_get_price_html', 'woo_text_after_price' );
add_filter( 'woocommerce_cart_item_price', 'woo_text_after_price' );

代码说明

  • 先通过is_user_logged_in()判断用户是否登录,未登录用户默认显示零售价,因此添加后缀
  • 已登录用户再检查是否属于批发用户组,符合条件则直接返回定价(不添加后缀),否则添加后缀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:03:12