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

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

Почему стандартных ролей WordPress недостаточно для тикет-системы

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

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

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

Для начала создадим две кастомные роли: wpticket_agent — для сотрудников, и wpticket_manager — для руководителей. Каждая роль получит свои права.

function wpticket_register_custom_roles() {
    add_role('wpticket_agent', 'Агент тикетов', [
        'read' => true,
        'edit_tickets' => true,
        'read_tickets' => true,
        'comment_tickets' => true
    ]);

    add_role('wpticket_manager', 'Менеджер тикетов', [
        'read' => true,
        'edit_tickets' => true,
        'read_tickets' => true,
        'comment_tickets' => true,
        'close_tickets' => true,
        'delete_tickets' => true
    ]);
}
add_action('init', 'wpticket_register_custom_roles');

Здесь мы создаем роли с простыми кастомными правами. Но WordPress не понимает их по умолчанию, поэтому нужно дополнительно реализовать проверку в коде.

Реализация проверки прав на уровне функционала тикет-системы

В функции, которая отвечает за изменение статуса тикета, нужно проверять, есть ли у текущего пользователя соответствующее право:

function wpticket_can_user_close_ticket($user_id) {
    $user = get_userdata($user_id);
    return in_array('wpticket_manager', $user->roles);
}

function wpticket_close_ticket($ticket_id, $user_id) {
    if (!wpticket_can_user_close_ticket($user_id)) {
        wp_die('У вас нет прав закрывать тикеты.');
    }
    // логика закрытия тикета
    wp_update_post([
        'ID' => $ticket_id,
        'post_status' => 'closed'
    ]);
}

Таким образом мы защищаем ключевые операции от пользователей с недостаточными правами.

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

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

Еще один полезный плагин — Expert Review, который поможет создавать расширенные настройки доступа и проверять права на уровне отдельных элементов интерфейса.

Пример расширения REST API для проверки прав в тикет-системе

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

add_action('rest_api_init', function () {
    register_rest_route('wpticket/v1', '/close/(?P<id>\d+)', [
        'methods' => 'POST',
        'callback' => 'wpticket_close_ticket_rest',
        'permission_callback' => function () {
            return current_user_can('close_tickets');
        },
    ]);
});

function wpticket_close_ticket_rest($request) {
    $ticket_id = $request['id'];
    $result = wpticket_close_ticket($ticket_id, get_current_user_id());
    if (is_wp_error($result)) {
        return $result;
    }
    return ['success' => true];
}

Таким образом REST API будет защищен от неавторизованных действий.

Выводы и рекомендации

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

Рекомендуется также проводить ревизию прав и тестировать все сценарии, чтобы избежать ошибок доступа.

Для расширения функционала и удобства администрирования советую рассмотреть плагины Clearfy Pro и Expert Review. Их возможности помогут быстро расширить и упростить управление ролями и правами в вашей тикет-системе.

Как создать собственный шорткод в WordPress
09.11.2025
Как создать автоматическое распределение тикетов в WordPress
06.02.2026
Как правильно удалить плагин WordPress без остатков
26.05.2026
Как добавить автотьюторные ответы в тикет-системе WordPress
04.03.2026
Как настроить разрешения и ролевую систему в тикет-системе WordPress
16.02.2026