显示用户角色名称-而不是插件

时间:2020-03-10 作者:g3ar

<?php global $current_user; echo array_shift($current_user->roles);>
使用它,我可以显示用户角色slug,但我想显示角色的名称。有什么建议吗?谢谢

2 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

WordPress(目前)没有全局功能(例如。get_role_name()) 获取角色名称(例如。Shop Manager 对于shop-manager 或者也许shop_manager 等等),但您可以很容易地获取(然后显示)它,如下所示:

$role = \'shop-manager\'; // the role slug; it\'s up to you how to get the value..

$role_name = $role ? wp_roles()->get_names()[ $role ] : \'\';
/* Or directly access WP_Roles::$role_names:
$role_name = $role ? wp_roles()->role_names[ $role ] : \'\';
*/

echo $role_name;
参考文献:wp_roles() 以及WP_Roles class.

一些附加注意事项使用时要小心array_shift() - 它会返回值,但也会从源数组中删除原始项,因此在您的情况下,下次访问$current_user->roles, 它将为空或不再包含用户的角色。

就像当前的post一样,使用get_post(), 还建议使用wp_get_current_user() 获取当前用户对象/数据,而不是依赖全局$current_user 变量

如果您的代码仅在当前用户通过身份验证/登录后运行,则获取用户角色的快捷方式为$role = wp_get_current_user()->roles[0]; :)

PS:非常感谢@WacławJacek 感谢他的有益评论!=)

SO网友:g3ar
<?php
global $current_user;
$role = $current_user->roles[0];
$role_name = $role ? wp_roles()->get_names()[ $role ] : \'\';
echo $role_name;
?>

Works like a charm

相关推荐

模板分类-{soronomy}.php不显示我的帖子

我有一个无法解决的简单问题。我有一个名为“Hardware”的自定义帖子类型taxonomy 已调用“hardware_category”. 我试图显示每个术语中的自定义帖子列表,其中包含文件taxonomy-hardware\\u类别。php,但不会返回任何结果(它应该显示5篇文章)。在我的模板中有什么特别需要考虑的吗?谢谢<?php // File: taxonomy-hardware_category.php get_header(); $ter