首页 > 解决方案 > 根据用户角色删除价格后缀

问题描述

基于用户角色添加后缀失败,因为它不会显示 Woo 价格显示短代码,我现在从另一个方向解决问题 - 我已将后缀添加到 Woos 税选项卡,现在想要删除后缀(来自除一个之外的所有用户角色)。

我在 github 上找到了这段代码,用于从产品中删除后缀:

add_filter( 'woocommerce_get_price_suffix', 'custom_woocommerce_get_price_suffix', 10, 2 );

function custom_woocommerce_get_price_suffix( $price_display_suffix, $product ) {
  if ( ! $product->is_taxable() ) {
    return '';
  }
  return $price_display_suffix;
}

我已经修改它以隐藏某些用户类型的后缀

add_filter( 'woocommerce_get_price_suffix', 'custom_woocommerce_get_price_suffix', 10, 2 );

function custom_woocommerce_get_price_suffix( $price_display_suffix, $product ) {

 // check current user role
    $user = wp_get_current_user();
    $roles = ( array ) $user->roles;

   if ( in_array( 'administrator', $roles ) ) {
        $price = $your_suffix;
    } elseif ( in_array( 'default_wholesaler', $roles ) ) {
        $price = '$your_suffix';

    return '';
  }
  return $price_display_suffix;
}

这行得通,但是我必须切换用户(我希望管理员和批发商看到后缀)并输入客户等。

问题是来宾客户仍然看到后缀。

除了登录的“默认批发商”用户和“管理员”之外,有人可以建议一种向任何人隐藏后缀的方法吗?

谢谢!

标签: woocommercehidesuffix

解决方案


您可以为此使用以下内容。

适用于管理员角色!您可以自己添加其他角色作为“练习”

function custom_woocommerce_get_price_suffix( $html, $product, $price, $qty ) { 
    // check current user role
    $user = wp_get_current_user();
    $roles = ( array ) $user->roles;

    // if NOT in array user roles
    if ( !in_array( 'administrator', $roles ) ) {
        $html = '';
    }

    return $html;
}
add_filter( 'woocommerce_get_price_suffix', 'custom_woocommerce_get_price_suffix', 10, 4 );

推荐阅读