Как создать автоматическое присваивание приоритета тикетам в WPtickets

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

Зачем нужно автоматическое присваивание приоритета тикетам

Ручное назначение приоритета каждому тикету требует времени и часто приводит к ошибкам или задержкам в обработке. Автоматизация этого процесса позволяет:

  • Экономить время операторов поддержки.
  • Обеспечить быструю обработку важных запросов.
  • Упорядочить очередь тикетов по степени срочности.
  • Уменьшить количество пропущенных или забытых тикетов.

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

Как работает система приоритетов в WPtickets

WPtickets позволяет создавать и использовать собственные статусы и приоритеты тикетов. Приоритеты обычно хранятся как мета-поля у поста-сообщения (тикета) или в отдельной таксономии. Наш код будет добавлять или менять значение приоритета при создании тикета.

Стандартные приоритеты могут быть, например: Низкий, Средний, Высокий, Срочный. Можно расширять список.

Пример структуры приоритета в WPtickets

Приоритет может храниться в мета-поле _wpt_ticket_priority. Значения могут быть строковыми или числовыми для сортировки.

Создаем функцию для автоматического присваивания приоритета

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

function wptickets_auto_assign_priority($ticket_id, $post) {
    // Получаем тему тикета
    $subject = sanitize_text_field(get_post_meta($ticket_id, 'ticket_subject', true));
    // Получаем содержание тикета
    $content = strip_tags($post->post_content);

    $priority = 'Средний'; // Значение по умолчанию

    // Пример ключевых слов для высокого приоритета
    $high_priority_keywords = array('срочно', 'не работает', 'ошибка', 'краш', 'потеря данных');

    foreach ($high_priority_keywords as $keyword) {
        if (stripos($subject, $keyword) !== false || stripos($content, $keyword) !== false) {
            $priority = 'Высокий';
            break;
        }
    }

    // Если в теме есть слова 'тест' или 'проба' — назначаем низкий приоритет
    $low_priority_keywords = array('тест', 'проба');
    foreach ($low_priority_keywords as $keyword) {
        if (stripos($subject, $keyword) !== false) {
            $priority = 'Низкий';
            break;
        }
    }

    // Сохраняем приоритет как мета-поле
    update_post_meta($ticket_id, '_wpt_ticket_priority', $priority);
}

// Хук на создание тикета
add_action('wp_insert_post', function($post_id, $post, $update) {
    if ($post->post_type !== 'wpt_ticket' || $update) {
        return;
    }
    wptickets_auto_assign_priority($post_id, $post);
}, 10, 3);

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

Расширение: присвоение приоритета по email или пользователю

Иногда важно выставлять приоритет тикета в зависимости от автора или источника. Например, если тикет пришел от VIP-клиента, ставим высокий приоритет.

function wptickets_auto_assign_priority_by_user($ticket_id, $post) {
    $user_id = get_post_meta($ticket_id, 'ticket_user_id', true);
    if (!$user_id) return;

    // Получаем роль пользователя
    $user = get_userdata($user_id);
    if (!$user) return;

    if (in_array('vip_customer', (array)$user->roles)) {
        update_post_meta($ticket_id, '_wpt_ticket_priority', 'Высокий');
    }
}

add_action('wp_insert_post', function($post_id, $post, $update) {
    if ($post->post_type !== 'wpt_ticket' || $update) {
        return;
    }
    wptickets_auto_assign_priority_by_user($post_id, $post);
}, 11, 3);

Здесь мы проверяем роль пользователя, и если есть специальная роль vip_customer, приоритет становится высоким.

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

Чтобы приоритет был виден менеджерам и операторам, его нужно добавить в колонки списка тикетов в админке и в шаблоны фронтенда.

Добавление колонки приоритета в админку

add_filter('manage_edit-wpt_ticket_columns', function($columns) {
    $columns['wpt_priority'] = 'Приоритет';
    return $columns;
});

add_action('manage_wpt_ticket_posts_custom_column', function($column, $post_id) {
    if ($column === 'wpt_priority') {
        $priority = get_post_meta($post_id, '_wpt_ticket_priority', true);
        echo esc_html($priority ?: 'Не задан');
    }
}, 10, 2);

Вывод приоритета на странице тикета для пользователя

В шаблоне тикета можно вывести приоритет простым вызовом:

$priority = get_post_meta(get_the_ID(), '_wpt_ticket_priority', true);
echo '<p><strong>Приоритет:</strong> ' . esc_html($priority) . '</p>';

Советы по улучшению автоматического присваивания приоритета

Чтобы сделать систему более точной и гибкой, можно:

  • Использовать регулярные выражения для поиска сложных паттернов в содержании тикета.
  • Добавить интерфейс в админке для редактирования ключевых слов и правил.
  • Интегрировать с внешними сервисами, например, анализом тональности текста (sentiment analysis).
  • Использовать плагин Clearfy Pro для улучшения производительности и расширения возможностей безопасности при работе с кастомным кодом.

Заключение

Автоматическое присваивание приоритета тикетам в WPtickets значительно ускоряет работу службы поддержки и повышает её качество. Реализовать это можно с помощью простых функций на PHP, используя хуки WordPress и WPtickets. Вы можете адаптировать примеры под свои нужды, расширять логику и интегрировать с дополнительными инструментами.

Установка и настройка WPtickets плагина для поддержки клиентов в WordPress
24.11.2025
Как создать систему поддержки (тикетов) в WordPress
20.11.2025
Отслеживание статусов тикетов в WordPress с помощью WPtickets
08.02.2026
Интеграция WPtickets с WPRemark для автоматического присваивания тикетов
26.12.2025
Как добавить событие изменения статуса тикета в WPtickets для WordPress
05.03.2026