问题描述

我有一个非常具体的要求,根据当前用户的角色在用户配置文件页面上的字段标签中显示不同的文本。我似乎无法弄清楚如何检查当前使用的是否是”author” 。

我正在寻找一个像

is_user_in_role($user, "author");

我想象这很简单,但是我没有找到答案,所以我以为我会在这里发贴。

最佳解决方案

如果您只需要当前用户 current_user_can()接受角色和功能。

更新:将角色名称传递给 current_user_can()不再能保证正常工作 (请参阅 #22624) 。相反,您可能希望检查用户角色:

$user = wp_get_current_user();
if ( in_array( 'author', (array) $user->roles ) ) {
    //The user has the "author" role
}

次佳解决方案

我正在寻找一种方法来获取用户的角色使用用户的身份。这是我想出来的:

function get_user_roles_by_user_id( $user_id ) {
    $user = get_userdata( $user_id );
    return empty( $user ) ? array() : $user->roles;
}

然后,is_user_in_role()功能可以这样实现:

function is_user_in_role( $user_id, $role  ) {
    return in_array( $role, get_user_roles_by_user_id( $user_id ) );
}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。