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

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

Зачем создавать новые роли и права в WordPress

Стандартные роли подходят для большинства сайтов, но иногда нужно настроить доступ под конкретные задачи. Например, можно создать роль «Модератор комментариев», которая сможет только управлять комментариями без доступа к публикациям. Или роль «Контент-менеджер», которая может редактировать и публиковать записи, но не имеет доступа к настройкам сайта.

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

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

Как добавить новую роль в WordPress: функция wplist_add_custom_role

Для создания новой роли используется функция add_role. Она принимает три параметра: уникальный ключ роли, имя для отображения и массив прав (capabilities).

Пример создания роли «Модератор комментариев» с минимальным набором прав:

function wplist_add_custom_role() {
    add_role('comment_moderator', 'Модератор комментариев', [
        'read' => true,
        'edit_posts' => false,
        'moderate_comments' => true,
        'edit_comments' => true,
        'delete_comments' => true
    ]);
}
register_activation_hook(__FILE__, 'wplist_add_custom_role');

В этом примере роль получает право читать сайт и модерацию комментариев, но не может создавать или редактировать записи.

Обратите внимание, что функцию register_activation_hook нужно использовать в плагине, чтобы роль добавлялась при активации плагина. Если вы хотите добавить роль в functions.php темы, просто вызовите функцию напрямую.

Как добавить дополнительные права к существующей роли

Иногда нужно не создавать новую роль, а расширить существующую. Для этого используется объект WP_Role и методы add_cap и remove_cap.

Пример добавления права управлять плагинами к роли Редактор:

function wplist_add_caps_to_editor() {
    $role = get_role('editor');
    if ($role) {
        $role->add_cap('activate_plugins');
        $role->add_cap('edit_plugins');
    }
}
add_action('init', 'wplist_add_caps_to_editor');

Важно помнить, что добавленные права сохраняются в базе данных, поэтому их нужно удалять вручную или через специальный скрипт, если они больше не нужны.

Популярные плагины для управления ролями и правами

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

  • User Role Editor – самый популярный плагин для создания и редактирования ролей и прав. Позволяет добавлять, удалять и изменять capabilities через интерфейс.
  • Members – плагин от MemberPress с простым UI для управления ролями, а также возможностью создавать приватный контент.
  • Advanced Access Manager – мощный инструмент для детального контроля доступа на уровне ролей, пользователей и контента.

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

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

Давайте создадим роль «Контент-менеджер», которая может управлять записями и страницами, но не имеет доступа к настройкам сайта.

function wplist_create_content_manager_role() {
    add_role('content_manager', 'Контент-менеджер', [
        'read' => true,
        'edit_posts' => true,
        'edit_pages' => true,
        'publish_posts' => true,
        'publish_pages' => true,
        'delete_posts' => true,
        'delete_pages' => true,
        'edit_others_posts' => true,
        'edit_others_pages' => true,
        'delete_others_posts' => true,
        'delete_others_pages' => true,
        // Запрет доступа к настройкам
        'manage_options' => false
    ]);
}
register_activation_hook(__FILE__, 'wplist_create_content_manager_role');

Чтобы скрыть меню «Настройки» для этой роли, добавим фильтр в админку:

function wplist_remove_settings_menu() {
    if(current_user_can('content_manager')) {
        remove_menu_page('options-general.php');
    }
}
add_action('admin_menu', 'wplist_remove_settings_menu', 999);

Так мы сделаем интерфейс удобнее и безопаснее для пользователей с ролью «Контент-менеджер».

Как протестировать созданные роли и права

После добавления новой роли или расширения существующей важно проверить, что права работают корректно. Для этого создайте нового пользователя с нужной ролью и попробуйте выполнить различные действия:

  • Создавать, редактировать и удалять записи и страницы.
  • Управлять комментариями (если это предусмотрено).
  • Открывать страницы настроек и плагины (доступ должен быть ограничен, если вы это задали).
  • Проверить доступ к административным меню и инструментам.

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

Выводы

Добавление и настройка ролей и прав — важная часть гибкой настройки WordPress под задачи проекта. Используйте функцию add_role для создания новых ролей и get_role()->add_cap() для расширения прав. Для удобства можно использовать популярные плагины, но код даёт максимальную свободу и контроль.

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

Если хотите узнать больше о кастомных решениях для WordPress, советую ознакомиться с плагином User Role Editor — он отлично интегрируется с любыми проектами и расширяет стандартные возможности.

Как установить и настроить cron в WordPress: практическое руководство
30.03.2026
Как вставить видео в WordPress с автоматическим адаптивным размером
05.04.2026
Как создать автоматические уведомления в WordPress с помощью хуков и плагинов
25.02.2026
WooCommerce: автоматическое изменение статуса заказа при возврате товара
11.05.2026
Как настроить автоматический импорт данных из внешнего источника в WordPress
05.02.2026