WPLite

Как настроить раздельные роли пользователей в WordPress с помощью кода

В WordPress по умолчанию существует набор ролей пользователей, таких как Администратор, Редактор, Автор, Участник и Подписчик. Однако часто требуется реализовать более тонкую настройку прав доступа, чтобы разграничить функционал для разных групп пользователей. В этой статье мы разберём, как создавать и настраивать кастомные роли пользователей в WordPress с помощью кода, а также приведём примеры управления возможностями (capabilities) и покажем, как интегрировать эти решения с популярными плагинами.

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

Стандартных ролей WordPress хватает для большинства сайтов, но бывают ситуации, когда необходимо:

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

Создание кастомной роли пользователя с помощью функции wplite_add_custom_role

Для добавления новой роли используем функцию add_role(). Ниже пример функции с префиксом wplite_, которая создаёт роль «Менеджер контента» с набором базовых возможностей:

function wplite_add_custom_role() {
    add_role('wplite_content_manager', 'Менеджер контента', array(
        'read' => true, // может читать сайт
        'edit_posts' => true, // может редактировать записи
        'publish_posts' => true, // может публиковать
        'upload_files' => true, // может загружать файлы
        'delete_posts' => false, // не может удалять записи
    ));
}
add_action('init', 'wplite_add_custom_role');

Добавьте этот код в файл functions.php вашей темы или в свой собственный плагин. После активации роли вы сможете назначать её пользователям.

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

Для изменения прав роли используйте объект WP_Role и методы add_cap() и remove_cap().

function wplite_modify_role_caps() {
    $role = get_role('wplite_content_manager');
    if ($role) {
        // Добавим возможность редактировать страницы
        $role->add_cap('edit_pages');
        // Удалим возможность публиковать записи
        $role->remove_cap('publish_posts');
    }
}
add_action('init', 'wplite_modify_role_caps');

Этот подход позволяет динамически управлять правами без удаления и повторного создания роли.

Примеры полезных возможностей для кастомных ролей

При создании кастомных ролей учитывайте, какие действия должен уметь выполнять пользователь. Вот список распространённых возможностей (capabilities):

  • read — доступ к сайту.
  • edit_posts — редактировать собственные записи.
  • edit_others_posts — редактировать чужие записи.
  • publish_posts — публиковать записи.
  • delete_posts — удалять записи.
  • upload_files — загружать медиафайлы.
  • edit_pages — редактировать страницы.
  • manage_options — доступ к настройкам сайта (обычно только для администраторов).

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

Удаление кастомной роли

Если роль больше не нужна, её можно удалить через функцию remove_role(). Например:

function wplite_remove_custom_role() {
    remove_role('wplite_content_manager');
}
// Вызовите эту функцию один раз вручную, например, активируя плагин, а потом удалите вызов
// add_action('init', 'wplite_remove_custom_role');

Внимание: удаление роли не удаляет пользователей с этой ролью — им будет назначена роль по умолчанию.

Использование плагинов для управления ролями

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

  • User Role Editor — мощный инструмент для создания и изменения ролей прямо из админки.
  • Members — позволяет создавать роли, настраивать права и контролировать доступ к контенту.

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

Пример: интеграция кастомной роли с плагином WPGPT для ограничения доступа

Если вы используете на сайте плагин WPGPT, можно ограничить доступ к функциям плагина только для определённых ролей. Например, проверим роль в AJAX-запросе:

function wplite_wpgpt_ajax_handler() {
    if (!current_user_can('wplite_content_manager')) {
        wp_send_json_error('Доступ запрещён');
        wp_die();
    }
    // Здесь логика обработки запроса WPGPT
}
add_action('wp_ajax_wplite_wpgpt_action', 'wplite_wpgpt_ajax_handler');

Так вы гарантируете, что только пользователи с кастомной ролью «Менеджер контента» смогут использовать определённые возможности плагина.

Советы по работе с ролями и возможностями

При работе с ролями учитывайте следующие рекомендации:

  • Не давайте пользователям права manage_options без крайней необходимости — это полный доступ к настройкам сайта.
  • Тестируйте роли на отдельной тестовой среде, чтобы избежать ошибок с доступом.
  • Используйте префиксы в названиях ролей и функций (например, wplite_), чтобы избежать конфликтов с другими плагинами.
  • Если необходимо — комбинируйте код и плагины для максимального удобства.
×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙