Отслеживание статусов тикетов в WordPress с помощью WPtickets

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

В любой системе поддержки клиентов эффективное управление и прозрачность статусов тикетов играют ключевую роль. Пользователи хотят понимать, на каком этапе находится их запрос, а менеджеры должны быстро видеть, какие тикеты требуют внимания. 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.

Как создать удобный инструмент импорта тикетов в WPtickets для WordPress
15.02.2026
Как использовать DPDK и PHP Queue для обработки тикетов в WPtickets
09.06.2026
Как создать мультиканальную поддержку в WP Tickets: интеграция email, чата и формы
27.03.2026
Как удалить все тикеты из базы WPtickets без удаления плагинов
19.05.2026
Как создать автоприкрепление файлов к тикетам в WPtickets
03.01.2026