Как добавить событие изменения статуса тикета в WPtickets для WordPress

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

Почему важно отслеживать изменение статуса тикета в WPtickets

Статусы тикетов позволяют точно контролировать этапы обработки заявок клиентов. При изменении статуса полезно запускать дополнительные действия, например:

  • Отправлять кастомные уведомления в Slack, Telegram или другие мессенджеры.
  • Обновлять CRM-систему или базу данных внешних сервисов.
  • Вести логи и аналитику по работе службы поддержки.
  • Автоматически назначать задачи сотрудникам или менять приоритеты.

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

Какие хуки предоставляет WPtickets для работы со статусами

WPtickets использует собственные хуки на базе WordPress, которые можно использовать для запуска кода при изменении тикета. Основные из них:

  • wptickets_status_changed — срабатывает после изменения статуса тикета, передаёт ID тикета, старый и новый статус.
  • wptickets_before_status_change — срабатывает до изменения статуса, можно отменить изменение.

Для примера мы будем использовать хук wptickets_status_changed, который идеально подходит для наших целей.

Пример использования хука wptickets_status_changed

Добавим в файл темы или в отдельный плагин следующий код:

add_action('wptickets_status_changed', 'wpticketsru_on_status_changed', 10, 3);
function wpticketsru_on_status_changed($ticket_id, $old_status, $new_status) {
    // Получаем объект тикета
    $ticket = WPTickets\Tickets\get_ticket($ticket_id);
    if (!$ticket) return;

    // Логируем изменение статуса
    error_log("[WPticketsru] Тикет #{$ticket_id} изменил статус с '{$old_status}' на '{$new_status}'");

    // Пример: Отправляем уведомление в Telegram (требует настройки Telegram API)
    // wpticketsru_send_telegram_message("Тикет #{$ticket_id} изменил статус: {$new_status}");

    // Другие кастомные действия...
}

Обратите внимание, что здесь мы используем функцию WPTickets\Tickets\get_ticket() для получения данных тикета. Это стандартный способ WPtickets работать с тикетами в коде.

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

Для примера добавим отправку простого уведомления на email администратору сайта:

function wpticketsru_on_status_changed($ticket_id, $old_status, $new_status) {
    $ticket = WPTickets\Tickets\get_ticket($ticket_id);
    if (!$ticket) return;

    $to = get_option('admin_email');
    $subject = "Изменение статуса тикета #{$ticket_id}";
    $message = "Статус тикета с темой '{$ticket->post_title}' изменился с '{$old_status}' на '{$new_status}'.";
    wp_mail($to, $subject, $message);
}
add_action('wptickets_status_changed', 'wpticketsru_on_status_changed', 10, 3);

Таким образом, вы будете автоматически получать письма о каждом изменении статуса, что поможет оперативно реагировать на процесс поддержки.

Как добавить отмену изменения статуса при определённых условиях

Иногда необходимо запретить смену статуса при выполнении определённых условий, например, если тикет в работе, а пользователь пытается перевести его в новый статус без выполнения задачи.

Для этого используйте хук wptickets_before_status_change. Пример:

add_filter('wptickets_before_status_change', 'wpticketsru_prevent_invalid_status_change', 10, 4);
function wpticketsru_prevent_invalid_status_change($allow, $ticket_id, $old_status, $new_status) {
    // Запретить перевод статуса с 'in_progress' в 'new'
    if ($old_status === 'in_progress' && $new_status === 'new') {
        // Можно вывести сообщение или лог
        error_log("[WPticketsru] Запрещена смена статуса с in_progress на new для тикета #{$ticket_id}");
        return false; // Отменяем смену статуса
    }
    return $allow;
}

Это позволяет контролировать логику работы с тикетами и избегать ошибок в процессе обработки.

Интеграция с WPRemark для расширения уведомлений и автоприсваивания

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

Например, при смене статуса можно автоматически присваивать тикет определённому сотруднику или запускать цепочку уведомлений в мессенджерах.

Резюме и рекомендации по использованию событий смены статуса

Добавление событий на смену статуса тикета в WPtickets — это эффективный способ расширить функционал поддержки и улучшить автоматизацию. Используйте хук wptickets_status_changed для выполнения действий после смены, и wptickets_before_status_change для валидации и отмены изменений.

Рекомендуется писать код в виде плагина или использовать functions.php дочерней темы, чтобы не потерять изменения при обновлении WPtickets.

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

Для более сложных задач рассмотрите интеграцию с WPRemark, который расширяет возможности автоматизации на базе событий WPtickets.

Как создать систему поддержки (тикетов) в WordPress
20.11.2025
Добавление подписки на обновления тикетов в WPtickets
30.03.2026
Создание расписания обработки тикетов в WordPress для повышения эффективности поддержки
22.12.2025
Отслеживание статусов тикетов в WordPress с помощью WPtickets
08.02.2026
Как использовать WooCommerce для продажи подписок и автоплатежей в WordPress
04.07.2026