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

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

В WordPress по умолчанию есть набор стандартных ролей — Администратор, Редактор, Автор, Участник и Подписчик. Эти роли имеют фиксированные права, которые подходят для большинства сайтов. Но на практике часто требуется более гибкое управление доступом, например, ограничить возможности конкретного пользователя или создать новую роль с уникальным набором прав. Это особенно важно при работе с командами разработчиков, редакторов, маркетологов и других участников проекта.

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

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

Основы работы с ролями и правами в WordPress

В WordPress управление ролями и правами осуществляется через объекты WP_Roles и функции типа add_role(), remove_role(), add_cap() и remove_cap(). Каждая роль — это набор прав (capabilities), которые определяют, что пользователь с этой ролью может делать.

Например, право edit_posts позволяет редактировать записи, а manage_options — менять настройки сайта.

Чтобы создать новую роль, используется функция add_role():

function wpacademy_add_custom_role() {
    add_role(
        'content_manager', // slug роли
        'Менеджер контента', // название роли
        array(
            'read' => true,
            'edit_posts' => true,
            'publish_posts' => true,
            'upload_files' => true,
            // дополнительные права
        )
    );
}
add_action('init', 'wpacademy_add_custom_role');

Этот код создаст новую роль с базовыми правами для работы с записями и загрузкой файлов.

Удаление и изменение ролей

Если роль больше не нужна, её можно удалить функцией remove_role('content_manager'). Чтобы добавить или убрать права у существующей роли, используется add_cap() или remove_cap() в объекте роли:

$role = get_role('editor');
$role->add_cap('edit_theme_options');
$role->remove_cap('delete_pages');

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

Пример: создаём роль «Контент-редактор» с ограниченными правами

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

Вот полный пример функции, которую нужно добавить в файл functions.php вашей темы или в кастомный плагин:

function wpacademy_create_content_editor_role() {
    // Удаляем роль, если она существует, чтобы избежать дублирования
    if (get_role('content_editor')) {
        remove_role('content_editor');
    }

    add_role('content_editor', 'Контент-редактор', array(
        'read' => true,
        'edit_posts' => true,
        'edit_published_posts' => true,
        'publish_posts' => true,
        'upload_files' => true,
        'delete_posts' => false, // запрет на удаление
        'delete_others_posts' => false,
        'manage_categories' => false,
        'edit_others_posts' => false
    ));
}
add_action('init', 'wpacademy_create_content_editor_role');

После добавления и активации этого кода в админке появится новая роль «Контент-редактор», которую можно назначать пользователям.

Проверка прав пользователя в шаблонах и плагинах

Чтобы условно выводить контент или функционал, проверяйте права пользователя с помощью функции current_user_can():

if (current_user_can('publish_posts')) {
    echo 'Вы можете публиковать записи';
} else {
    echo 'У вас нет прав для публикации';
}

Это полезно для ограничения доступа к определённым частям сайта или панели управления.

Управление ролями с помощью плагинов

Если вы предпочитаете GUI вместо кода, рекомендую использовать плагин Members. Он позволяет создавать и редактировать роли, назначать права и ограничивать доступ без программирования.

Ещё один популярный плагин — Clearfy Pro, который среди прочего улучшает безопасность и управление правами пользователя.

Как интегрировать с вашим кастомным плагином

Если вы разрабатываете собственный плагин, всегда регистрируйте роли и права при активации плагина, а при деактивации — удаляйте их, чтобы не оставлять «мусор» в системе.

register_activation_hook(__FILE__, 'wpacademy_plugin_activate');
function wpacademy_plugin_activate() {
    wpacademy_create_content_editor_role();
}

register_deactivation_hook(__FILE__, 'wpacademy_plugin_deactivate');
function wpacademy_plugin_deactivate() {
    remove_role('content_editor');
}

Это хороший стиль и практика для поддержания чистоты в базе данных WordPress.

Безопасность и рекомендации при работе с ролями

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

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

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

Как добавить поддержку JSON-LD в WordPress для SEO
19.12.2025
Автоматическое удаление незаконченых заказов WooCommerce
16.05.2026
Как настроить автоматическое удаление неиспользуемых медиафайлов в WordPress
13.02.2026
Как автоматизировать удаление неработающих шорткодов в WordPress
11.03.2026
Как использовать REST API в WordPress для создания кастомных эндпоинтов
25.11.2025