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

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

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

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

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

Если у вас есть собственный тип записи — тикет (например, ticket), то можно использовать хук save_post_ticket для запуска функции при создании или обновлении тикета.

Ниже пример функции, которая отправляет автоматическое письмо на электронную почту пользователя, указанный в метаполе тикета (например, user_email):

function wpticket_send_auto_message_on_ticket_create($post_id) {
    // Проверяем, что это не автосохранение
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // Проверяем права пользователя
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    // Получаем пост
    $post = get_post($post_id);

    // Проверяем тип записи
    if ($post->post_type !== 'ticket') {
        return;
    }

    // Проверяем, создается ли тикет впервые
    $is_new = get_post_meta($post_id, '_wpticket_is_new', true);
    if ($is_new) {
        return; // Уже отправляли сообщение
    }

    // Получаем email пользователя из метаполя
    $user_email = get_post_meta($post_id, 'user_email', true);
    if (!$user_email || !is_email($user_email)) {
        return;
    }

    // Формируем тему и тело письма
    $subject = 'Ваш тикет принят в обработку';
    $message = "Здравствуйте!\n\nВаш тикет с ID {$post_id} успешно создан. Мы свяжемся с вами в ближайшее время.\n\nСпасибо за обращение!";

    // Отправляем письмо
    wp_mail($user_email, $subject, $message);

    // Помечаем, что сообщение отправлено
    update_post_meta($post_id, '_wpticket_is_new', 1);
}
add_action('save_post_ticket', 'wpticket_send_auto_message_on_ticket_create');

В этом коде мы защищаемся от повторной отправки письма при каждом обновлении, используя метаполе _wpticket_is_new. Также важно корректно указывать email пользователя при создании тикета.

Объяснение ключевых моментов кода

  • Проверка DOING_AUTOSAVE позволяет избежать запуска функции при автосохранении.
  • Проверка прав пользователя защищает от неавторизованных изменений.
  • Проверяется тип записи, чтобы не срабатывать на другие посты.
  • Использование метаполя для email — удобный способ хранить контактные данные.
  • Функция wp_mail отвечает за отправку почты.

Автоматизация с помощью плагинов для тикет-систем и уведомлений

Если вы используете готовые решения для управления тикетами, например, плагин WP Ticket или другие, часто в них уже встроена система уведомлений. Но если нет, можно воспользоваться плагинами для автоматизации почтовых рассылок:

  • WP Mail SMTP — улучшает доставку писем с сайта, настраивает SMTP-серверы.
  • Better Notifications for WP — позволяет создавать и настраивать любые уведомления по событиям, в том числе при создании кастомных постов.
  • AutomateWoo — мощный плагин автоматизации маркетинга, который можно адаптировать под уведомления в тикет-системе.

Для интеграции с WP Ticket можно настроить автоматические письма через Better Notifications for WP, указав триггер «Создание тикета» и шаблон сообщения, в котором будут динамические данные о тикете.

Пример настройки уведомления в Better Notifications for WP

1. Установите и активируйте плагин с официального сайта WPSHOP.

2. В админке перейдите в раздел «Уведомления» и создайте новое уведомление.

3. В разделе «Триггер» выберите «Создание записи» и укажите тип записи ticket.

4. В шаблоне письма используйте переменные, например, {post_title}, {post_author_email}, и добавьте кастомные метаполя.

5. Сохраните и протестируйте отправку письма при создании нового тикета.

Как отправлять автоматические сообщения с кастомным контентом

В реальных условиях нужно часто отправлять персонализированные письма, включающие данные из тикета: описание проблемы, номер тикета, ссылку на просмотр. Рассмотрим пример функции, которая формирует HTML-письмо с деталями тикета:

function wpticket_send_detailed_auto_message($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (!current_user_can('edit_post', $post_id)) return;

    $post = get_post($post_id);
    if ($post->post_type !== 'ticket') return;

    $is_new = get_post_meta($post_id, '_wpticket_is_new', true);
    if ($is_new) return;

    $user_email = get_post_meta($post_id, 'user_email', true);
    if (!$user_email || !is_email($user_email)) return;

    $ticket_description = get_post_meta($post_id, 'ticket_description', true);
    $ticket_url = get_permalink($post_id);

    $subject = 'Ваш тикет принят: #' . $post_id;

    $message = "<html><body>";
    $message .= "<h2>Спасибо за обращение!</h2>";
    $message .= "<p>Ваш тикет успешно создан и зарегистрирован под номером <strong>#$post_id</strong>.</p>";
    $message .= "<p><strong>Описание проблемы:</strong><br>" . nl2br(esc_html($ticket_description)) . "</p>";
    $message .= "<p>Вы можете отслеживать статус тикета по ссылке: <a href='" . esc_url($ticket_url) . "'>Просмотреть тикет</a></p>";
    $message .= "<p>Мы свяжемся с вами в ближайшее время.</p>";
    $message .= "</body></html>";

    $headers = array('Content-Type: text/html; charset=UTF-8');

    wp_mail($user_email, $subject, $message, $headers);
    update_post_meta($post_id, '_wpticket_is_new', 1);
}
add_action('save_post_ticket', 'wpticket_send_detailed_auto_message');

В этом варианте письмо выглядит более профессионально, содержит HTML-разметку и подробности тикета. Главное — убедиться, что все данные корректно передаются и безопасны к выводу.

Отладка и тестирование отправки писем

Частой проблемой при реализации автоматических уведомлений является некорректная отправка писем. Чтобы отладить процесс, используйте следующие методы:

  • Включите логирование почты с помощью плагина WP Mail Logging.
  • Настройте SMTP-сервер через WP Mail SMTP для повышения надежности доставки.
  • Проверяйте почтовый ящик и спам, чтобы убедиться, что письма доходят.
  • Используйте функцию error_log() в PHP для вывода промежуточных данных.

Например, вызов error_log('Отправлено письмо на ' . $user_email); поможет удостовериться, что функция сработала.

Заключение

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

Если хотите хорошее решение «из коробки», посмотрите на плагины, которые поддерживают уведомления по событиям. Для разработчиков же возможность написать свою функцию даст гибкость и контроль над процессом.

Дополнительно рекомендуем ознакомиться с плагином WP Ticket на WPSHOP, который предлагает расширенный функционал для управления тикетами и встроенные уведомления.

Как добавить автоматическое возвращение тикетов в WordPress
02.04.2026
Как создать систему отслеживания проблем в WordPress с пользовательским статусом тикетов
28.12.2025
Как добавить автоматические теги в тикеты WordPress
07.03.2026
Как добавить автоматические подписки на изменения тикетов в WordPress
14.03.2026
Как автоматизировать управление обработкой тикетов в WordPress
24.12.2025