Как сделать отображение пользовательных ролей в WordPress с примером кода

В WordPress стандартно есть несколько ролей пользователей: Администратор, Редактор, Автор, Участник и Подписчик. Иногда возникает задача вывести на сайте список пользователей с определённой ролью или отобразить роль конкретного пользователя. В этой статье мы подробно рассмотрим, как получить и отобразить пользовательские роли в WordPress, включая примеры кода для разработчиков.

Понимание системы ролей и возможностей WordPress

Роли в WordPress определяют, какие права и возможности есть у пользователя. Каждая роль состоит из набора возможностей (capabilities), например, возможность публиковать записи, редактировать страницы, управлять плагинами и т.д. Для работы с ролями используется класс WP_Roles и функции, связанные с пользователями.

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

Как получить роль текущего пользователя

Чтобы узнать роль текущего залогиненного пользователя, используется следующий код:

function wptool_get_current_user_role() {
    if ( ! is_user_logged_in() ) {
        return false; // Пользователь не авторизован
    }
    $user = wp_get_current_user();
    if ( empty( $user->roles ) ) {
        return false; // Роли нет
    }
    return $user->roles[0]; // Возвращаем первую роль
}

Этот код подходит для случаев, когда пользователю назначена одна роль. Если ролей несколько, можно обработать массив $user->roles.

Пример вывода роли на фронтенде

Добавим в шаблон следующий код для отображения роли:

$role = wptool_get_current_user_role();
echo $role ? 'Ваша роль: ' . esc_html( $role ) : 'Вы не авторизованы';

Вывод списка пользователей по ролям с пагинацией

Иногда нужно получить список всех пользователей с определённой ролью, например, показать всех редакторов на отдельной странице. Для этого используется класс WP_User_Query.

Пример функции для получения и отображения пользователей с ролью «редактор»:

function wptool_list_users_by_role( $role = 'editor', $number = 10, $paged = 1 ) {
    $args = array(
        'role'    => $role,
        'number'  => $number,
        'paged'   => $paged,
        'orderby' => 'display_name',
        'order'   => 'ASC',
    );
    $user_query = new WP_User_Query( $args );

    if ( ! empty( $user_query->results ) ) {
        echo '<ul>';
        foreach ( $user_query->results as $user ) {
            echo '<li>' . esc_html( $user->display_name ) . ' (' . esc_html( $user->user_email ) . ')</li>';
        }
        echo '</ul>';
    } else {
        echo 'Пользователи с ролью "' . esc_html( $role ) . '" не найдены.';
    }
}

Вызов функции:

wptool_list_users_by_role('editor', 10, 1);

Для реализации пагинации нужно использовать параметр paged и передавать его из запроса GET или POST.

Создание шорткода для вывода пользователей по ролям

Чтобы удобно выводить список пользователей с нужной ролью в любом месте сайта, можно создать шорткод:

function wptool_shortcode_users_by_role( $atts ) {
    $atts = shortcode_atts( array(
        'role'   => 'subscriber',
        'number' => 5,
        'paged'  => 1,
    ), $atts, 'users_by_role' );

    ob_start();
    wptool_list_users_by_role( $atts['role'], (int) $atts['number'], (int) $atts['paged'] );
    return ob_get_clean();
}
add_shortcode( 'users_by_role', 'wptool_shortcode_users_by_role' );

Теперь можно использовать в контенте сайта:

[users_by_role role="editor" number="10" paged="1"]

Работа с кастомными ролями

Если вы используете собственные роли, добавленные через плагины или вручную, код будет работать аналогично, просто укажите в параметре role имя вашей роли.

Пример добавления кастомной роли:

function wptool_add_custom_role() {
    add_role( 'custom_manager', 'Менеджер', array(
        'read'         => true,
        'edit_posts'   => true,
        'delete_posts' => false,
    ) );
}
add_action( 'init', 'wptool_add_custom_role' );

После этого вы сможете выводить пользователей с ролью custom_manager через ранее описанные функции.

Использование плагина Clearfy для управления ролями

Для удобного управления ролями и возможностями стоит обратить внимание на плагин Clearfy. Он позволяет тонко настраивать права, оптимизировать сайт и устранить лишние возможности для ролей, снижая риски безопасности.

Заключение и рекомендации

Работа с ролями пользователей в WordPress — часто востребованная задача, особенно при создании сайтов с разными уровнями доступа. Использование классов WP_User и WP_User_Query позволяет гибко получать и отображать информацию о ролях и пользователях.

Для расширенного управления ролями, в том числе кастомными, рекомендуем использовать готовые решения, такие как плагин Clearfy, который дополнительно помогает оптимизировать безопасность и функциональность.

Как сделать отображение пользовательных ролей в WordPress с примером кода
18.01.2026
Как удалить или изменить авторские права в метаданных WordPress
08.02.2026
Как создать автоматическую переадресацию в WordPress по условиям
17.04.2026
Как удалить оставшиеся товары WooCommerce после удаления категории
15.05.2026
Автоматический отчет по активности пользователей в WordPress: как сделать и настроить
17.02.2026