Wordpress 角色显示名称

Posted

技术标签:

【中文标题】Wordpress 角色显示名称【英文标题】:Wordpress Role Display Name 【发布时间】:2014-09-23 10:36:02 【问题描述】:

我正在寻找一种简洁的方法来获取 。

当您添加角色(例如add_role( 'special', 'A Special Role');)时,您可以设置显示名称。

当您获取角色(例如get_role( 'special' );)时,返回的角色对象仅包含名称和功能对象。

WP_Role Object(
[name] => special
[capabilities] => Array() )

并且没有显示名称。显示名称在整个 WP Admin 后端(users.php 和 user-edit.php)中都使用,但它是一个兔子沃伦......我一直无法找到将返回它的函数。您可以在wp-options 表中的wp_user_roles 行中轻松看到它——当然我不需要去那里?

【问题讨论】:

【参考方案1】:

如果您正在运行一个非英语 WordPress 网站并希望显示正确的(翻译后的)角色名称,因为它出现在所有 WordPress 管理页面中,请按以下步骤操作:

    global $wp_roles;
    echo translate_user_role( $wp_roles->roles[ $role ]['name'] );

其中$role 是角色名称(即原始问题中的'special')。

注意:translate_user_role 是一个 WordPress 核心功能,并没有记录在案。

【讨论】:

【参考方案2】:

这是我对上述情况的解决方案:

    global $wp_roles;
    $role = $wp_roles->roles['special']['name'];

或者就我而言,我想要实现的是:

    global $wp_roles;
    $u = get_userdata($user->ID);
    $role = array_shift($u->roles);
    $user->role = $wp_roles->roles[$role]['name'];

希望这对某人有所帮助

【讨论】:

【参考方案3】:

<?php
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);

if ($user_role == 'administrator') 
echo 'Administrator';
 elseif ($user_role == 'editor') 
echo 'Editor';
 elseif ($user_role == 'author') 
echo 'Author';
 elseif ($user_role == 'contributor') 
echo 'Contributor';
 elseif ($user_role == 'subscriber') 
echo 'Subscriber';
 else 
echo '<strong>' . $user_role . '</strong>';

?>

【讨论】:

以上是关于Wordpress 角色显示名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 在 wordpress 中根据登录用户 = 角色显示内容

在WordPress中根据用户角色显示/隐藏内容

如何从 PHP 代码自定义 Wordpress DashBoard 中的用户角色?

用户权限 - 用户角色触发代码 (Wordpress)

Wordpress 显示名称存储在两个地方?

PHP Wordpress - 显示管理页面挂钩名称