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

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

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

Роль пользователя определяет набор прав (capabilities), которые позволяют выполнять определённые действия в админке и на сайте. Создавая собственные роли, вы можете гибко контролировать доступ и функционал для разных групп пользователей. Это особенно полезно на крупных сайтах, маркетплейсах, образовательных порталах и других проектах, где нужны кастомные сценарии.

Например, вы можете создать роль «Куратор», которая сможет редактировать только определённые записи, или «Менеджер заказов» с ограниченным доступом к WooCommerce.

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

Для создания роли используется функция add_role(). Лучшее место для её вызова — хук after_setup_theme или активация плагина. Ниже пример функции для создания роли с набором возможностей:

function wpassist_add_custom_role() {
    add_role('wpassist_manager', 'Менеджер WPAssist', array(
        'read' => true,
        'edit_posts' => true,
        'delete_posts' => false,
        'publish_posts' => true,
        'upload_files' => true,
        // Добавьте другие capabilities по необходимости
    ));
}
add_action('after_setup_theme', 'wpassist_add_custom_role');

Эта функция создаст роль «Менеджер WPAssist» с определёнными правами. Если роль уже существует, функция её не изменит — можно добавить проверку или использовать отдельный скрипт для обновления.

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

Вот несколько часто используемых capabilities:

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

Полный список можно найти в официальной документации WordPress.

Как добавить или изменить capabilities у существующей роли

Для изменения прав уже созданной роли используется функция get_role() и методы добавления или удаления возможностей:

function wpassist_modify_role_caps() {
    $role = get_role('wpassist_manager');
    if ($role) {
        $role->add_cap('edit_others_posts');
        $role->remove_cap('delete_posts');
    }
}
add_action('init', 'wpassist_modify_role_caps');

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

Как использовать новую роль в проверках и условных конструкциях

После создания роли вы можете проверять пользователя по ролям и capabilities:

if (current_user_can('wpassist_manager')) {
    // Выполнить код для менеджера
}

// Или проверить capability
if (current_user_can('edit_others_posts')) {
    // Доступно редактирование чужих записей
}

Это удобно для ограничения доступа к определённым функциям или меню.

Добавление пользовательского типа пользователя с помощью плагина WPUserRoleEditor

Если хотите управлять ролями через UI, можно использовать плагин WPUserRoleEditor. Он позволяет создавать, редактировать роли и capabilities без кода, что удобно для администраторов.

Практические советы и частые ошибки

  • Не создавайте роли с правами администратора без нужды — это опасно.
  • При тестировании пользуйтесь отдельной учётной записью с новой ролью.
  • Если роль не применяется, проверьте, не кешируются ли capabilities (попробуйте сбросить кэш плагинов).
  • Для сложных сценариев можно создавать кастомные таблицы пользователей или метаданные, но это уже продвинутая тема.

Заключение

Создание собственных ролей пользователей в WordPress — мощный инструмент для настройки прав доступа. Используя хуки и функции WordPress, вы легко можете добавить новые роли, настроить capabilities и интегрировать их в бизнес-логику сайта. Это позволит сделать ваш проект более гибким и безопасным.

Как удалить неиспользуемые метаданные в WordPress для оптимизации базы данных
29.12.2025
Как автоматизировать удаление старого контента в WordPress
21.02.2026
WooCommerce: автоматическое изменение стоимости товаров по расписанию
24.05.2026
Как изменить URL текущей страницы в WordPress без перенаправления
27.02.2026
Как удалить пустые meta-поля в WordPress: эффективные методы и примеры
24.02.2026