Автоматизация процесса тегирования тикетов — важный элемент удобного и быстрого управления системой поддержки на WordPress с плагином WPtickets. Теги помогают быстро фильтровать заявки, распределять их между отделами и приоритетизировать задачи. В этой статье мы подробно разберем, как реализовать автоматическое присвоение тегов тикетам на основе их содержимого, статуса или других условий.
Зачем нужен автоматический тег для тикетов в WPtickets
Ручное добавление тегов к каждому тикету — рутинная и часто ошибочная задача, особенно при большом потоке заявок. Автоматический тег позволяет:
- Сэкономить время сотрудников поддержки
- Обеспечить единообразие классификации тикетов
- Упростить поиск и фильтрацию по тегам
- Автоматизировать маршрутизацию заявок
Например, если в тикете встречается слово "оплата", можно автоматически присвоить ему тег "Платежи", чтобы сразу направить заявку к соответствующему специалисту.
Как создать автоматический тег с помощью WPtickets и PHP-кода
Использование хука для автоматического добавления тегов при создании тикета
WPtickets предоставляет ряд хуков, которые позволяют вмешиваться в процесс создания и обновления тикетов. Для нашей задачи подойдет хук wptickets_after_ticket_insert, который вызывается после сохранения тикета в базе.
Пример функции, которая автоматически добавляет тег «Приоритет: Высокий», если в тексте тикета встречается слово «срочно»:
function wpticketsru_auto_add_tag($ticket_id, $ticket_data) {
// Получаем содержимое тикета
$content = isset($ticket_data['content']) ? $ticket_data['content'] : '';
// Проверяем наличие ключевого слова
if (stripos($content, 'срочно') !== false) {
// Получаем текущие теги тикета
$tags = get_post_meta($ticket_id, 'wptickets_tags', true);
if (!is_array($tags)) {
$tags = [];
}
// Добавляем тег, если его нет
if (!in_array('Приоритет: Высокий', $tags)) {
$tags[] = 'Приоритет: Высокий';
update_post_meta($ticket_id, 'wptickets_tags', $tags);
}
}
}
add_action('wptickets_after_ticket_insert', 'wpticketsru_auto_add_tag', 10, 2);Этот код нужно добавить в файл functions.php вашей темы или в кастомный плагин. Он проверяет текст тикета и если находит ключевое слово, добавляет нужный тег.
Расширение логики: теги по статусу и категории
Также можно автоматически добавлять теги в зависимости от статуса тикета или выбранной категории. Например, если тикет находится в статусе «Ожидание ответа», можно добавить тег «Ждем клиента».
function wpticketsru_tag_by_status($ticket_id, $ticket_data) {
$status = isset($ticket_data['status']) ? $ticket_data['status'] : '';
if ($status === 'waiting_customer') {
$tags = get_post_meta($ticket_id, 'wptickets_tags', true);
if (!is_array($tags)) {
$tags = [];
}
if (!in_array('Ждем клиента', $tags)) {
$tags[] = 'Ждем клиента';
update_post_meta($ticket_id, 'wptickets_tags', $tags);
}
}
}
add_action('wptickets_after_ticket_update', 'wpticketsru_tag_by_status', 10, 2);Этот код реагирует на обновление тикета и добавляет нужный тег по статусу.
Использование плагинов для автоматизации тегирования тикетов
Если вы предпочитаете не писать код, можно воспользоваться плагинами для автоматизации WordPress, которые работают с кастомными постами и метаданными, к которым относятся тикеты WPtickets.
Плагин Uncanny Automator
Uncanny Automator позволяет создавать автоматические сценарии на основе действий внутри WordPress. Можно настроить триггер на создание или обновление тикета и действие — добавление тега.
Преимущества:
- Интуитивно понятный интерфейс
- Поддержка множества интеграций
- Не требует программирования
Недостаток — в бесплатной версии функционал ограничен, для сложных сценариев потребуется премиум.
Плагин Advanced Custom Fields (ACF) + WP Code snippets
Если у вас есть навыки PHP, можно использовать ACF для создания поля тегов и WP Code snippets для добавления автоматизации через хуки. Такой подход гибче и позволяет кастомизировать логику под любые задачи.
Тонкости и рекомендации по работе с тегами в WPtickets
Обратите внимание, что WPtickets хранит теги тикетов в метаполях поста. Для корректного добавления и удаления тегов используйте функции get_post_meta и update_post_meta. При массовых операциях рекомендуем кешировать данные и оптимизировать запросы.
Также стоит продумать единый стиль именования тегов, например, с префиксом или разделением по категориям. Это облегчит фильтрацию и автоматизацию.
При добавлении большого количества тегов учитывайте, что интерфейс WPtickets может замедляться. В таких случаях лучше создавать кастомные фильтры и группы тегов.
Пример комплексного решения: автоматическое тегирование по ключевым словам и статусу
Объединим два предыдущих примера в одну функцию, которая добавляет теги по содержимому и статусу тикета:
function wpticketsru_auto_tagging($ticket_id, $ticket_data) {
$content = isset($ticket_data['content']) ? $ticket_data['content'] : '';
$status = isset($ticket_data['status']) ? $ticket_data['status'] : '';
$tags = get_post_meta($ticket_id, 'wptickets_tags', true);
if (!is_array($tags)) {
$tags = [];
}
if (stripos($content, 'срочно') !== false && !in_array('Приоритет: Высокий', $tags)) {
$tags[] = 'Приоритет: Высокий';
}
if ($status === 'waiting_customer' && !in_array('Ждем клиента', $tags)) {
$tags[] = 'Ждем клиента';
}
update_post_meta($ticket_id, 'wptickets_tags', $tags);
}
add_action('wptickets_after_ticket_insert', 'wpticketsru_auto_tagging', 10, 2);
add_action('wptickets_after_ticket_update', 'wpticketsru_auto_tagging', 10, 2);Такой подход позволит автоматически поддерживать актуальные теги и улучшит организацию заявок.
Заключение
Автоматическое присвоение тегов в WPtickets — мощный инструмент для оптимизации работы службы поддержки на WordPress. Используя хуки и кастомный код, вы можете адаптировать систему под любые бизнес-задачи, а при необходимости подключать сторонние плагины для расширения функционала без программирования.
Для более сложных сценариев и интеграций рекомендуем ознакомиться с документацией WPtickets и возможностями WordPress API. Если хотите попробовать готовые решения или дополнения, загляните на wpshop.ru, где представлены полезные инструменты для развития вашего сайта и поддержки клиентов.