根据用户组或登录状态显示/隐藏价格后缀文本
解决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
相关产品推荐
相关产品推荐

