Как отобразить роль пользователя
Как отобразить роль пользователя на странице автора.
Я создал свою собственную роль (группу) и хочу выводить роль пользователя под постами и в списке авторов.
Я пробовал этот код, но он не работает, так как использует current_user и показывает роль текущего пользователя во всех профилях авторов
<?php
// Получаем роли текущего пользователя
$user_roles = $current_user->roles;
// Берем первую роль из массива
$user_role = array_shift($user_roles);
// Проверяем и выводим роль
if ($user_role == 'administrator') {
echo 'Администратор';
} elseif ($user_role == 'editor') {
echo 'Редактор';
} elseif ($user_role == 'author') {
echo 'Автор';
} elseif ($user_role == 'contributor') {
echo 'Контрибьютор';
} elseif ($user_role == 'subscriber') {
echo 'Подписчик';
} else {
echo '<strong>' . $user_role . '</strong>';
}
?>
Как изменить этот код, чтобы он отображал фактическую роль пользователя, а не роль текущего пользователя.

Я предполагаю, что вы пытаетесь отобразить роль автора записи, а не текущего пользователя, просматривающего страницу автора.
Предполагая, что вы находитесь внутри цикла, выполните следующее:
//получаем ID автора записи
$user_id = get_the_author_meta( 'ID' ); //предполагаем, что мы в The Loop
$user_obj = get_userdata( $user_id );
if( !empty( $user_obj->roles ) ){
foreach( $user_obj->roles as $role ){
echo $role;
}
}
Или, если вы назначаете только одну роль каждому пользователю/автору, то вместо всего блока foreach
можно сделать следующее:
echo $user_obj->roles[0];

Измените:
$user_roles = $current_user->roles;
на
$user = new WP_User( $user_id );
$user_roles = $user->roles;
и $user_id должен быть фактическим ID пользователя, чью роль вы пытаетесь получить.
Обновление,
Извините, я только что прочитал часть про шаблон автора, так что попробуйте это:
//сначала получите текущего автора, чью страницу вы просматриваете
if(isset($_GET['author_name']))
$curauth = get_user_by('slug', $author_name);
else
$curauth = get_userdata(intval($author));
//затем получите объект пользователя с ролями
$user = new WP_User( $$curauth->ID );
$user_roles = $user->roles;
....

Получаю такой вывод object(WP_User)#349 (7) { ["data"]=> NULL ["ID"]=> int(0) ["caps"]=> array(0) { } ["cap_key"]=> NULL ["roles"]=> array(0) { } ["allcaps"]=> array(0) { } ["filter"]=> NULL }
Я использую название роли, как видно в моем первом коде, а не какой-либо ID, может ли это быть причиной проблемы?
