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 中根据登录用户 = 角色显示内容