我为此尝试了各种解决方案,尽管以下代码可以正常工作,并且不会在日志或类似内容中产生任何错误,但我仍在努力理解如何获取用户角色名称而不是实际帐户用户名
这是我正在使用的代码:
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, ));
答案 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'];