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

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

Почему стоит создавать роли и права вручную?

Использование плагинов для управления ролями и правами, таких как Clearfy Pro, удобно, но не всегда оправдано. Во-первых, это дополнительная нагрузка на сайт, во-вторых, иногда нужно тонко контролировать логику доступа, что проще сделать на уровне кода. Такой подход повышает гибкость и безопасность.

Далее мы рассмотрим, как программно добавить новую роль с набором прав и как модифицировать существующие роли.

Добавление пользовательской роли в WordPress

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

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

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

Удаление роли

Если нужно удалить роль, используется функция remove_role():

function wpbegin_remove_custom_role() {
    remove_role('custom_manager');
}
// Запускать при необходимости, например, при деактивации темы/плагина

Изменение прав существующих ролей

Чтобы добавить или убрать права у существующей роли, необходимо получить объект роли с помощью get_role() и использовать методы add_cap() и remove_cap().

function wpbegin_modify_editor_role() {
    $role = get_role('editor');
    if ($role) {
        // Добавим право удалять опубликованные записи
        $role->add_cap('delete_published_posts');

        // Уберём право публиковать страницы
        $role->remove_cap('publish_pages');
    }
}
add_action('init', 'wpbegin_modify_editor_role');

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

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

Рассмотрим несколько примеров ролей, которые могут пригодиться на практике:

  • Менеджер комментариев: может читать и модератировать комментарии, но не имеет доступа к созданию или редактированию записей.
  • Контент-менеджер: может создавать, редактировать и публиковать записи, но не имеет доступа к настройкам сайта.
  • SEO-специалист: имеет доступ к редактированию метаданных и SEO-плагинов, но не может менять контент.

Для реализации таких ролей достаточно определить соответствующие права. Например, для менеджера комментариев можно использовать:

add_role('comment_manager', 'Менеджер комментариев', array(
    'read' => true,
    'edit_posts' => false,
    'moderate_comments' => true,
));

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

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

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

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

Интеграция с плагинами WPShop

Если вы используете плагины от WPShop, например, WPRemark для отзывов, можно ограничить доступ к настройкам плагина только определённым ролям. Для этого достаточно добавить в код проверку в админке:

function wpbegin_restrict_wpremark_access() {
    if (!current_user_can('manage_options')) { // или ваша кастомная роль
        wp_die('Доступ запрещён');
    }
}
add_action('admin_init', 'wpbegin_restrict_wpremark_access');

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

Советы по безопасности и оптимизации

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

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

Если нужно массово управлять ролями через интерфейс, можно использовать плагин Clearfy Pro, но для уникальных и нестандартных задач ручное кодирование часто предпочтительнее.

Как удалить или изменить автора постов в WordPress
24.03.2026
Как создать автоматический бэкап базы данных WordPress с помощью плагинов
16.12.2025
Как создать уникальный хлебные крошки (breadcrumb) в WordPress с поддержкой SEO
19.12.2025
Как создать Custom Post Type с дополнительными метаданными в WordPress
23.12.2025
WooCommerce: как добавить пользовательское поле в форму оплаты через хук
18.04.2026