根据用户角色删除价格后缀

Removing price suffix based on user role

添加基于用户角色的后缀失败,因为它不会显示 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;
}

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

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

有人可以建议一种对登录 'default-wholesaler' 用户和 'Administrator' 以外的任何人隐藏后缀的方法吗?

谢谢!

您可以使用以下内容。

适用于管理员角色!您可以自己将其他角色添加为 'exercise'

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 );