В 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 для показа блока подписчикам
После установки и активации:
- Перейдите в Content Control → Add New.
- Задайте название правила, например, «Только для подписчиков».
- Выберите условие «User Role» и установите «Subscriber».
- В поле Content добавьте HTML или шорткод, который хотите показать.
- Сохраните правило — теперь только подписчики увидят этот контент.
Как скрыть части страницы с помощью кастомного шорткода и проверок ролей
Иногда нужно показывать разный контент внутри одной статьи. Для этого удобно написать шорткод с параметрами ролей.
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.
Также регулярно проверяйте роли и права пользователей, чтобы избежать непреднамеренного раскрытия контента.
Использование собственных шорткодов и условных функций даёт гибкость и контроль, а плагины значительно упрощают настройку без программирования.