Получить роль пользователя по ID WordPress

Мне нужно как-то проверить роль кого-то только с их идентификатором. Я нашел проверку current_user_can(). Но это работает только для людей, которые вошли в систему. Как я могу проверить это, если этот пользователь не является текущим пользователем? Я использую систему заказов по телефону, но для заказа других людей используется учетная запись администратора/конкретного пользователя.

Ответ 1

Вы не можете получить роль пользователя напрямую. Во-первых, вы должны получить user_meta_data, и он вернет объект, который будет содержать роли пользователя.

Код:

$user_meta=get_userdata($user_id);

$user_roles=$user_meta->roles; //array of roles the user is part of.

Ответ 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';
}

Ответ 4

Здравствуйте, попробуйте этот оптимальный код

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