В стандартной установке WordPress есть роли пользователей, такие как подписчик, автор, редактор и администратор. Однако нередко возникает задача более гибко управлять доступом к контенту и функциям сайта, создавая собственные группы пользователей с уникальными правами. В этой статье мы разберём, как создать группу пользователей в WordPress с индивидуальными правилами доступа как через код, так и с помощью плагинов.
Почему стандартных ролей WordPress может быть недостаточно
Стандартные роли в WordPress покрывают базовые задачи, но при сложных проектах, например, порталах с закрытым контентом, образовательных сайтах или корпоративных ресурсах, требуется более тонкая настройка. Например, нужно, чтобы одна группа могла видеть одни записи и страницы, а другая — другие. Или чтобы разные группы могли публиковать, редактировать и удалять разные типы записей.
Задача создания группы пользователей с уникальными правами часто решается добавлением новых ролей и настройкой capabilities (способностей, прав) в WordPress.
Создание собственной роли и настройка прав доступа через код
Для создания новой роли используется функция add_role. Рассмотрим пример создания роли «Премиум-пользователь» с ограниченными правами доступа.
function wpaction_add_custom_role() {
add_role(
'premium_user', // уникальный идентификатор роли
'Премиум-пользователь', // отображаемое имя
array(
'read' => true, // может читать контент
'edit_posts' => false, // не может редактировать записи
'upload_files' => true, // может загружать файлы
)
);
}
add_action('init', 'wpaction_add_custom_role');Этот код добавит новую роль с минимальным набором прав. Однако для управления доступом к конкретным страницам или записям этого недостаточно. Нужно дополнительно проверять роль пользователя при загрузке контента.
Пример ограничения доступа к определённым страницам
Чтобы ограничить доступ к странице с ID 42 только для пользователей с ролью «premium_user», добавим фильтр:
function wpaction_restrict_page_access() {
if (is_page(42) && !current_user_can('premium_user')) {
wp_redirect(home_url());
exit;
}
}
add_action('template_redirect', 'wpaction_restrict_page_access');Этот код проверит при загрузке страницы, что пользователь обладает нужной ролью, и если нет — перенаправит его на главную страницу.
Использование плагина Members для создания и управления группами пользователей
Если хотите упростить процесс создания ролей и настройки прав, обратите внимание на плагин Members. Он позволяет создавать роли и управлять capabilities через удобный интерфейс.
Плагин позволяет:
- Создавать и удалять роли пользователей.
- Назначать права на отдельные возможности (например, редактирование страниц, публикация записей).
- Настраивать доступ к контенту через шорткоды и параметры.
Пример использования шорткода плагина для показа контента только пользователям с определённой ролью:
[members_only roles="premium_user"]
Контент для премиум пользователей
[/members_only]Как ограничить видимость виджетов для групп пользователей
Плагин Members также позволяет управлять видимостью виджетов. Для этого после установки и активации, в настройках виджета появится опция выбора ролей, для которых он будет виден.
Это удобно для создания персонализированных боковых панелей и меню, которые меняются в зависимости от группы пользователя.
Пример создания кастомной проверки доступа в шаблонах темы
Если вы пишете тему и хотите встроить проверку доступа по группам в шаблоны, можно использовать функцию wpaction_user_has_role:
function wpaction_user_has_role($role) {
if (!is_user_logged_in()) return false;
$user = wp_get_current_user();
return in_array($role, (array) $user->roles);
}Использование в шаблоне:
if (wpaction_user_has_role('premium_user')) {
echo 'Контент для премиум пользователей';
} else {
echo 'У вас нет доступа к этому контенту';
}Такой подход позволяет гибко контролировать отображение элементов сайта без сторонних плагинов.
Интеграция с плагином WPRemark для автоматизации доступа
Если на вашем сайте используется плагин WPRemark для автоматизации публикаций и взаимодействия с пользователями, можно дополнительно настроить автоматическое присвоение ролей при регистрации или выполнении определённых действий.
Например, после прохождения теста или выполнения задания — пользователь получает роль «premium_user», что открывает ему доступ к закрытому контенту.
Для реализации такого сценария понадобится написать кастомный хук на событие плагина, который будет менять роль пользователя.
Подводим итоги и рекомендации
Создание групп пользователей с индивидуальными правами в WordPress — важная задача, решаемая как кодом, так и плагинами. Для быстрого старта рекомендуем плагин Members, а для тонкой настройки — написание собственного кода с использованием функций WordPress.
Также стоит внимательно тестировать все ограничения, чтобы не допустить ошибок с доступом, и регулярно обновлять плагины и сам WordPress для безопасности.