Почему важно отслеживать статусы тикетов в системе поддержки
В любой системе поддержки клиентов эффективное управление и прозрачность статусов тикетов играют ключевую роль. Пользователи хотят понимать, на каком этапе находится их запрос, а менеджеры должны быстро видеть, какие тикеты требуют внимания. WPtickets предоставляет базовый набор статусов, но возможности кастомизации позволяют значительно улучшить процесс и сделать его более удобным для вашей команды.
Стандартные статусы, такие как «Открыт», «В работе», «Закрыт», хорошо подходят для базовых сценариев, но в реальной работе часто необходимо добавить промежуточные состояния — например, «Ожидание ответа клиента», «Приоритетный», «Требует проверки» и другие. В этой статье мы рассмотрим, как расширить стандартные статусы WPtickets, отслеживать их изменения и выводить пользовательскую информацию для администраторов и клиентов.
Кастомизация статусов тикетов в WPtickets: добавляем новые статусы
WPtickets позволяет работать с кастомными статусами через фильтры и хуки. Для добавления новых статусов нужно зарегистрировать их, а затем реализовать логику отображения и обработки.
Пример добавления статусов:
add_filter('wptickets_ticket_statuses', 'wpticketsru_add_custom_statuses');
function wpticketsru_add_custom_statuses($statuses) {
$statuses['waiting_customer'] = __('Ожидание ответа клиента', 'wptickets');
$statuses['priority'] = __('Приоритетный', 'wptickets');
return $statuses;
}После регистрации новых статусов нужно позаботиться об их корректном отображении в админке и фронтенде. Обычно WPtickets автоматически подхватывает новые статусы, если они добавлены через фильтр, но для полной интеграции может понадобиться добавить стили и дополнительные проверки.
Отображение новых статусов в списках тикетов
Чтобы новые статусы отображались в фильтрах и списках тикетов, можно использовать фильтр wptickets_ticket_status_labels:
add_filter('wptickets_ticket_status_labels', 'wpticketsru_custom_status_labels');
function wpticketsru_custom_status_labels($labels) {
$labels['waiting_customer'] = '<span style="color:orange;">Ожидание ответа клиента</span>';
$labels['priority'] = '<span style="color:red;font-weight:bold;">Приоритетный</span>';
return $labels;
}Так вы улучшите визуальное восприятие статусов и быстро выделите важные тикеты.
Отслеживание изменений статусов тикетов: события и уведомления
Очень полезно знать, когда статус тикета изменился, чтобы отправлять уведомления, запускать автоматические действия или вести логи. WPtickets предоставляет хук do_action('wptickets_status_changed', $ticket_id, $old_status, $new_status);, который срабатывает при смене статуса.
Пример использования для отправки уведомления администратору:
add_action('wptickets_status_changed', 'wpticketsru_notify_admin_on_status_change', 10, 3);
function wpticketsru_notify_admin_on_status_change($ticket_id, $old_status, $new_status) {
$ticket = wptickets_get_ticket($ticket_id);
$admin_email = get_option('admin_email');
$subject = "Статус тикета #{$ticket_id} изменён";
$message = "Тикет с ID {$ticket_id} изменил статус с '{$old_status}' на '{$new_status}'.\n\nТема: {$ticket->post_title}\nСсылка: " . get_edit_post_link($ticket_id);
wp_mail($admin_email, $subject, $message);
}Такой подход поможет вам оперативно реагировать на изменения и ускорит процесс поддержки.
Автоматическое изменение статусов через крон-задачи
Иногда нужно автоматически менять статус тикета, например, переводить в «Ожидание ответа клиента» через 3 дня, если пользователь не ответил. Для этого можно настроить WP-Cron и запускать кастомный код.
function wpticketsru_auto_close_old_tickets() {
$args = [
'post_type' => 'wptickets_ticket',
'post_status' => ['open', 'waiting_customer'],
'date_query' => [
'before' => date('Y-m-d H:i:s', strtotime('-3 days')),
],
'fields' => 'ids',
];
$query = new WP_Query($args);
if ($query->have_posts()) {
foreach ($query->posts as $ticket_id) {
wp_update_post([
'ID' => $ticket_id,
'post_status' => 'closed'
]);
}
}
}
if (!wp_next_scheduled('wpticketsru_daily_status_check')) {
wp_schedule_event(time(), 'daily', 'wpticketsru_daily_status_check');
}
add_action('wpticketsru_daily_status_check', 'wpticketsru_auto_close_old_tickets');Этот код будет ежедневно проверять тикеты и закрывать устаревшие, что снижает нагрузку на менеджеров и улучшает качество поддержки.
Вывод статусов тикетов на фронтенде: информируем пользователей
Для улучшения UX полезно показывать пользователю текущий статус его тикета в личном кабинете или на странице просмотра. WPtickets использует стандартные шаблоны, но вы можете добавить кастомный вывод через шорткод или виджет.
Пример простого шорткода для вывода статуса:
function wpticketsru_show_ticket_status($atts) {
$atts = shortcode_atts(['id' => 0], $atts);
$ticket_id = intval($atts['id']);
if (!$ticket_id) return 'Тикет не найден';
$status = get_post_status($ticket_id);
$statuses = apply_filters('wptickets_ticket_statuses', []);
$status_label = isset($statuses[$status]) ? $statuses[$status] : $status;
return "Статус вашего тикета: <strong>{$status_label}</strong>";
}
add_shortcode('wpticketsru_ticket_status', 'wpticketsru_show_ticket_status');Используйте шорткод [wpticketsru_ticket_status id=123] для вывода информации о конкретном тикете.
Интеграция с плагином WPRemark для автоматизации
Если вы используете WPRemark для управления комментариями и сообщениями, можно связать изменения статусов с действиями в WPRemark, например, чтобы при новом комментарии клиента статус автоматически менялся на «В работе».
add_action('wpremark_new_comment', 'wpticketsru_update_status_on_comment', 10, 2);
function wpticketsru_update_status_on_comment($comment_id, $ticket_id) {
$current_status = get_post_status($ticket_id);
if ($current_status === 'waiting_customer') {
wp_update_post([
'ID' => $ticket_id,
'post_status' => 'in_progress'
]);
}
}Это позволит ускорить реакцию на запросы и улучшить качество поддержки.
Заключение: лучшие практики и рекомендации
Отслеживание и кастомизация статусов тикетов — важный инструмент для эффективной поддержки. Используйте возможности WPtickets для добавления нужных статусов, автоматизируйте процессы с помощью хуков и WP-Cron, а также улучшайте интерфейс для клиентов с помощью кастомных шорткодов. Комбинация этих подходов позволит создать удобную и прозрачную систему поддержки на вашем сайте.
Подробнее о WPtickets и других полезных плагинах для WordPress можно узнать на wpshop.ru.