Как добавить дополнительные типы пользователей в WordPress и управлять их правами

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

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

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

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

  • Упростить управление доступом для конкретных групп пользователей;
  • Избежать излишнего расширения прав у стандартных ролей;
  • Обеспечить более точную безопасность сайта;
  • Сделать интерфейс администрирования более удобным, скрывая ненужные разделы.

Создание кастомной роли: базовый пример

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

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

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

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

Изменение и удаление ролей и прав

Если нужно добавить или убрать права у существующей роли, используйте класс WP_Roles или функции add_cap() и remove_cap() объекта роли.

Пример добавления права для роли «Автор»:

function two_wp_modify_author_caps() {
    $role = get_role('author');
    if ($role) {
        $role->add_cap('upload_files'); // разрешаем авторам загружать файлы
    }
}
add_action('init', 'two_wp_modify_author_caps');

Удаление роли выполняется функцией remove_role():

function two_wp_remove_custom_role() {
    remove_role('content_manager');
}
// Запускайте удаление один раз, потом закомментируйте или удалите вызов
// add_action('init', 'two_wp_remove_custom_role');

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

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

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

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

Как отобразить кастомные роли в админке и ограничить доступ к разделам

Создание роли — только половина дела. Часто нужно ограничить доступ к определённым меню или страницам админки для новых ролей. Это достигается с помощью фильтров и хуков WordPress.

Пример скрытия меню «Плагины» для роли «content_manager»:

function two_wp_remove_menus_for_content_manager() {
    if (current_user_can('content_manager')) {
        remove_menu_page('plugins.php'); // меню Плагины
    }
}
add_action('admin_menu', 'two_wp_remove_menus_for_content_manager', 999);

Также можно ограничить доступ к страницам через проверку прав в хуках admin_init или current_screen.

Создание кастомного шаблона профиля для новых ролей

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

Пример добавления поля «Отдел» для роли «content_manager»:

function two_wp_extra_profile_fields($user) {
    if (in_array('content_manager', $user->roles)) {
        ?>
        <h3>Дополнительные данные</h3>
        <table class="form-table">
            <tr>
                <th><label for="department">Отдел</label></th>
                <td>
                    <input type="text" name="department" id="department" value="<?php echo esc_attr(get_user_meta($user->ID, 'department', true)); ?>" class="regular-text" /><br />
                    <span class="description">Введите название отдела, в котором работает пользователь.</span>
                </td>
            </tr>
        </table>
        <?php
    }
}
add_action('show_user_profile', 'two_wp_extra_profile_fields');
add_action('edit_user_profile', 'two_wp_extra_profile_fields');

function two_wp_save_extra_profile_fields($user_id) {
    if (!current_user_can('edit_user', $user_id)) {
        return false;
    }
    if (isset($_POST['department'])) {
        update_user_meta($user_id, 'department', sanitize_text_field($_POST['department']));
    }
}
add_action('personal_options_update', 'two_wp_save_extra_profile_fields');
add_action('edit_user_profile_update', 'two_wp_save_extra_profile_fields');

Резюме и рекомендации

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

Рекомендуется:

  • Тщательно планировать набор прав для новых ролей;
  • Использовать плагины управления ролями для упрощения задач;
  • Тестировать новые роли на тестовом сайте перед внедрением;
  • Добавлять кастомные поля и ограничения интерфейса под нужды новых ролей.

Подробности и дополнительные инструменты можно найти на wpshop.ru.

Как создать уникальный фильтрованный список постов в WordPress
01.03.2026
Как создать автоматический отложенный постинг в WordPress
09.02.2026
Как автоматически отключить доступ к REST API в WordPress для незарегистрированных пользователей
04.03.2026
Как автоматически обновлять контент в WordPress с помощью WP-Cron
10.04.2026
Как добавить дополнительные типы пользователей в WordPress и управлять их правами
11.03.2026