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

Если редактору нужно править страницы, но не управлять плагинами, или клиенту требуется доступ только к части работы сайта, не выдавайте ему роль администратора. В WordPress доступ определяется не названием роли, а набором возможностей — capabilities. Можно настроить существующую роль или создать новую с нужными правами.

Сначала определите, что именно должен делать пользователь

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

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

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

Для страниц используются отдельные возможности, например edit_pages; права на записи не всегда дают такие же права на страницы. Также учитывайте разницу между редактированием собственных материалов и материалов других авторов. Не добавляйте edit_others_pages или аналогичное право на записи, если пользователю не нужно менять чужой контент.

Когда достаточно изменить стандартную роль

Если человеку нужна стандартная роль с одним дополнительным правом, обычно проще добавить возможность к существующей роли. Например, сотруднику с ролью «Автор» может понадобиться загружать изображения: для этого добавляют upload_files. Но изменение роли затронет всех пользователей, у которых она назначена. Если дополнительное право нужно только одному человеку или отдельной группе, создайте новую роль либо выдайте право точечно через подходящий инструмент.

Не ориентируйтесь только на название роли в профиле. Проверьте фактический список возможностей: он может отличаться из-за ранее установленных плагинов или изменений темы. Изменение набора прав способно повлиять на работу пользователей сразу после сохранения.

Настройка ролей через плагин

Для сайта, где роли нужно время от времени менять через админку, подойдет плагин управления ролями, например User Role Editor. Установите его из каталога WordPress, откройте управление ролями, выберите существующую роль или создайте новую, затем отметьте только необходимые возможности и сохраните изменения. Названия пунктов и расположение настроек могут различаться в зависимости от версии плагина.

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

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

Создание роли небольшим плагином

Ниже пример роли «Редактор клиента». Она позволяет входить в панель, редактировать страницы, в том числе страницы других авторов, редактировать опубликованные страницы и загружать файлы. Возможности publish_pages в примере нет, поэтому роль не получает право публиковать страницы. Если такой доступ нужен, добавьте его осознанно.

Создайте файл, например client-editor-role.php, в отдельной папке внутри wp-content/plugins/, вставьте код и активируйте плагин в разделе плагинов WordPress. Активация может менять сохраненные в базе данных права, поэтому сначала проверьте код на тестовом сайте или сделайте резервную копию.

<?php
/**
 * Plugin Name: Client Editor Role
 */

function wp_pro_register_client_editor_role() {
    $role = get_role( 'client_editor' );

    if ( ! $role ) {
        add_role(
            'client_editor',
            'Редактор клиента',
            array(
                'read'                  => true,
                'edit_pages'            => true,
                'edit_others_pages'     => true,
                'edit_published_pages'  => true,
                'upload_files'          => true,
            )
        );

        $role = get_role( 'client_editor' );
    }

    if ( $role ) {
        $role->add_cap( 'upload_files' );
    }
}

register_activation_hook( __FILE__, 'wp_pro_register_client_editor_role' );

Проверка через get_role() нужна, потому что WordPress не пересобирает уже существующую роль при повторном вызове add_role(). В примере права у уже созданной роли не сбрасываются: при активации к ней добавляется upload_files. Поэтому если вы измените список возможностей в коде и затем активируете плагин повторно, новые права нужно добавлять через add_cap(), а ненужные убирать через remove_cap(). Не рассчитывайте, что правка массива в add_role() обновит существующую роль.

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

Как назначить роль и убедиться, что права работают

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

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

Где заканчиваются возможности ролей

Роли и возможности управляют действиями в WordPress, но не заменяют все правила доступа. Например, отдельное право можно назначить роли, однако оно не начнет автоматически защищать функцию вашего плагина или собственный раздел сайта: код этой функции должен проверять доступ, обычно через current_user_can(). Не проверяйте роль по ее названию, если нужно проверить конкретное разрешенное действие: проверка возможности обычно надежнее и лучше переносится между разными ролями.

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

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

Как добавить и настроить страницу 404 в WordPress
20.10.2026
Как создать собственный тип записи (Custom Post Type) в WordPress: подробное руководство с примерами
29.09.2026
Как добавить пользовательские роли и права доступа в WordPress
13.11.2026
Как настроить кеширование в WordPress: плагины, серверный кеш и ошибки настройки
28.10.2026
Как ускорить WordPress: практические способы без смены хостинга
23.10.2026