【问题标题】:Get user role by ID WordPress通过 ID WordPress 获取用户角色
【发布时间】:2016-08-11 18:47:28
【问题描述】:

我需要以某种方式仅使用他们的 id 来检查某人的角色。 我找到了current_user_can() 支票。但这仅适用于已登录的人。如果该用户不是当前用户,我将如何检查?我正在使用电话订购系统,但它使用管理员/特定帐户为其他人订购。

【问题讨论】:

  • 如前所述,我使用特殊的电话订购系统。有时(例如)管理员为特定用户下订单。发生这种情况时,我需要检查该原始用户的角色

标签: php wordpress user-roles


【解决方案1】:

要检查用户是否具有特定角色,您必须获取他们的角色列表并查看该角色是否在此处列出。

示例函数:

function user_has_role($user_id, $role_name)
{
    $user_meta = get_userdata($user_id);
    $user_roles = $user_meta->roles;
    return in_array($role_name, $user_roles);
}

使用示例:

$user_is_subscriber = user_has_role(get_current_user_id(), 'subscriber');

【讨论】:

  • $user_meta=get_userdata($user_id); $user_roles=$user_meta->roles; if (in_array("subscriber", $user_roles)){} 对订阅者进行角色检查。
【解决方案2】:

在继续之前您需要了解的信息:

  • 您不能直接通过 ID 获取用户角色。
  • 可以获取分配给用户的所有角色。

让我们获取所有角色并检查您感兴趣的角色是否存在或现在。

<?php

// Get the user object.
$user = get_userdata( $user_id );

// Get all the user roles as an array.
$user_roles = $user->roles;

// Check if the role you're interested in, is present in the array.
if ( in_array( 'subscriber', $user_roles, true ) ) {
    // Do something.
    echo 'YES, User is a subscriber';
}

【讨论】:

    【解决方案3】:
    $user_meta = get_userdata($user_id);
    $user_roles = $user_meta->roles;
    
    if ( in_array( 'administrator', $user_roles, true ) ) {
        //echo User is a administrator';
    }
    

    【讨论】:

    • 你的答案看起来很像 3 个月前的 Ahmad's answer。这会增加什么新东西吗?
    【解决方案4】:

    你好试试这个最佳代码

    if (get_userdata($post->post_author)->roles[0] == 'your_specified_role'){
       echo 'role exist';
    }else{
       echo 'role does not exist';
    }
    

    【讨论】:

    • 一个用户在WordPress中可以有多个角色,所以正确的断言方式是in_array
    猜你喜欢
    • 2019-07-11
    • 2018-03-08
    • 2015-11-11
    • 2020-07-27
    • 2021-12-11
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多