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

В WordPress часто возникает задача показывать различный контент в зависимости от роли пользователя. Например, администраторы видят одни страницы, подписчики — другие, а гости — третьи. В этой статье мы подробно разберём, как реализовать такую функциональность с помощью кода и готовых плагинов, а также рассмотрим практические примеры.

Почему важно отображать контент по ролям пользователей

Разделение контента позволяет создавать персонализированный опыт для посетителей сайта, улучшать безопасность и управлять доступом к информации. Это особенно актуально для сайтов с платным контентом, образовательных порталов, корпоративных ресурсов и сообществ.

В WordPress по умолчанию есть несколько ролей: администратор, редактор, автор, подписчик и гость (неавторизованный пользователь). Для каждой роли можно настроить уникальные возможности, а также отображать свой контент.

Использование условных тегов WordPress для вывода контента по ролям

Самый прямой способ — использовать условные функции WordPress в шаблонах темы или в коде плагина. Основные функции для проверки ролей:

  • current_user_can() — проверяет, есть ли у текущего пользователя определённая способность или роль;
  • is_user_logged_in() — проверяет, авторизован ли пользователь;
  • wp_get_current_user() — возвращает объект текущего пользователя с его ролями.

Пример кода, который выводит приветствие в зависимости от роли:

function wpdream_show_content_by_role() {
    if ( ! is_user_logged_in() ) {
        echo '<p>Здравствуйте, гость! Пожалуйста, войдите, чтобы увидеть больше.</p>';
        return;
    }
    $user = wp_get_current_user();
    if ( in_array( 'administrator', (array) $user->roles ) ) {
        echo '<p>Привет, администратор! Здесь ваш уникальный контент.</p>';
    } elseif ( in_array( 'subscriber', (array) $user->roles ) ) {
        echo '<p>Здравствуйте, подписчик! Доступен специальный контент для вас.</p>';
    } else {
        echo '<p>Привет, пользователь с ролью: ' . esc_html( implode( ', ', $user->roles ) ) . '</p>';
    }
}

Эту функцию можно вызвать в нужном месте темы или добавить в шорткод.

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

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

function wpdream_role_based_shortcode() {
    ob_start();
    wpdream_show_content_by_role();
    return ob_get_clean();
}
add_shortcode( 'wpdream_role_content', 'wpdream_role_based_shortcode' );

Теперь в любом месте сайта достаточно добавить [wpdream_role_content], и посетитель увидит персонализированное приветствие.

Плагины для управления контентом по ролям пользователей

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

  • Members — расширенный менеджер ролей и прав с возможностью ограничения доступа к контенту.
  • Content Control — простой плагин для отображения или скрытия блоков контента по ролям и правам.
  • Restrict Content — позволяет ограничить видимость записей и страниц для определённых ролей.

Например, с плагином Content Control можно создать правило отображения блока для пользователей с ролью «подписчик» без единой строчки кода.

Пример использования Content Control для показа блока подписчикам

После установки и активации:

  1. Перейдите в Content Control → Add New.
  2. Задайте название правила, например, «Только для подписчиков».
  3. Выберите условие «User Role» и установите «Subscriber».
  4. В поле Content добавьте HTML или шорткод, который хотите показать.
  5. Сохраните правило — теперь только подписчики увидят этот контент.

Как скрыть части страницы с помощью кастомного шорткода и проверок ролей

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

function wpdream_shortcode_role_content( $atts, $content = null ) {
    $atts = shortcode_atts( array(
        'role' => '',
    ), $atts, 'role_content' );

    if ( ! is_user_logged_in() ) {
        return '';
    }
    $user = wp_get_current_user();
    $allowed_roles = explode( ',', $atts['role'] );
    foreach ( $allowed_roles as $role ) {
        $role = trim( $role );
        if ( in_array( $role, (array) $user->roles ) ) {
            return do_shortcode( $content );
        }
    }
    return '';
}
add_shortcode( 'role_content', 'wpdream_shortcode_role_content' );

Пример использования в статье:

[role_content role="administrator,editor"]Этот контент увидят только администраторы и редакторы.[/role_content]

Так можно гибко контролировать видимость любого текста, изображений и даже форм.

Использование плагина WPGPT для автоматизации и кастомизации контента по ролям

Плагин WPGPT позволяет создавать динамический контент с помощью искусственного интеллекта, который можно адаптировать под роли пользователей.

Например, можно генерировать приветственные сообщения, советы или FAQ, которые меняются в зависимости от роли посетителя. Для реализации достаточно интегрировать API плагина и использовать его функции для вывода персонализированного текста.

Пример интеграции WPGPT с проверкой роли

function wpdream_wpgpt_content_by_role() {
    if ( ! function_exists( 'wpgpt_generate_text' ) ) {
        return 'Плагин WPGPT не активирован';
    }

    if ( ! is_user_logged_in() ) {
        return wpgpt_generate_text( 'Приветствие для гостя' );
    }

    $user = wp_get_current_user();
    if ( in_array( 'subscriber', (array) $user->roles ) ) {
        return wpgpt_generate_text( 'Советы для подписчиков' );
    }

    return wpgpt_generate_text( 'Общее приветствие' );
}
add_shortcode( 'wpdream_wpgpt_role_content', 'wpdream_wpgpt_content_by_role' );

Данный шорткод [wpdream_wpgpt_role_content] выводит уникальный текст, сгенерированный ИИ, адаптированный под роль пользователя.

Резюме и рекомендации по безопасности

При работе с ролями и доступом важно не только отображать контент, но и ограничивать доступ к данным на уровне сервера, чтобы пользователи не могли получить информацию через прямые ссылки или API.

Используйте возможности WordPress по управлению правами, а при необходимости комбинируйте с плагинами, которые контролируют доступ к страницам, записям и REST API.

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

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

Как удалить ненужные стили и скрипты в WordPress для ускорения сайта
30.11.2025
Как удалить мета-тег generator из WordPress без плагина
20.12.2025
Как создать автоматическое резервное копирование WordPress
26.11.2025
Как правильно хранить пароли в WordPress с помощью плагинов и кода
28.03.2026
Как установить автоматический редирект на новый URL в WordPress
06.03.2026