在WooCommerce的“我的帐户”仪表板上显示用户角色名称

时间:2019-05-18 09:09:50

标签: php wordpress woocommerce account user-roles

我为此尝试了各种解决方案,尽管以下代码可以正常工作,并且不会在日志或类似内容中产生任何错误,但我仍在努力理解如何获取用户角色名称而不是实际帐户用户名

这是我正在使用的代码:

global $current_user;
wp_get_current_user();
if ( is_user_logged_in()) {
echo 'Username: ' . $current_user->user_login .'';
echo '<br />';
echo 'User display name: ' . $current_user->display_name .'';
}
else { wp_loginout(); }
echo '<br>';

我希望它显示如下:

Username:用户名 Account type:角色名称

用户名和帐户类型应位于两行中。 帐户类型的重点是因为我添加了以下内容:

add_role ( 'business', __( 'Business', 'woocommerce' ), array( 'read' => true, ));

1 个答案:

答案 0 :(得分:0)

根据您的自定义角色“业务”尝试以下操作:

global $current_user;

if ( $current_user > 0 ) {

    echo __('Username:') . ' ' . $current_user->user_login . '<br />';

    $account_type = in_array('business', $current_user->roles) ? __('Business') : __('Customer');

    echo __('Account type') . ' ' . $account_type . '<br />';
}

它应该如您所愿。


要从用户角色信息中获取角色名称:

global $wp_roles;

$role = 'business';
$role_name = $wp_roles->roles[$role]['name'];

如果每个用户具有唯一的用户角色,则可以使用以下内容:

global $current_user, $wp_roles;

if ( $current_user > 0 ) {

    $role_name = $wp_roles->roles[reset($current_user->roles)]['name']; 

    echo __('Username:') . ' ' . $current_user->user_login . '<br />';

    echo __('Account type') . ' ' . $role_name . '<br />';
}

或者您可以通过以下方式获得最后一个用户角色:

$role_name = $wp_roles->roles[end($current_user->roles)]['name'];