Автоматическое отклонение тикетов в WPtickets: настройка и примеры

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

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

Автоматическое отклонение тикетов позволяет:

  • Удалять спам и нерелевантные запросы без участия оператора;
  • Своевременно очищать очередь от тикетов, которые не требуют обработки;
  • Повышать качество работы поддержки, фокусируясь на действительно важных обращениях.

Без такой автоматизации операторы могут тратить время на тикеты, которые не требуют решения, что снижает общую эффективность работы.

Настройка базового фильтра для автоматического отклонения

WPtickets предоставляет ряд хуков и фильтров, которые позволяют программно изменять статус тикетов. Для создания автоматического отклонения мы будем использовать планировщик задач WordPress (wp_cron) и функцию, которая проверяет тикеты по заданным критериям.

Пример задачи, которая запускается ежедневно и отклоняет тикеты без ответа более 7 дней:

function wptickets_schedule_reject_old_tickets() {
    if ( ! wp_next_scheduled( 'wptickets_reject_old_tickets_event' ) ) {
        wp_schedule_event( time(), 'daily', 'wptickets_reject_old_tickets_event' );
    }
}
add_action( 'wp', 'wptickets_schedule_reject_old_tickets' );

add_action( 'wptickets_reject_old_tickets_event', 'wptickets_reject_old_tickets_callback' );

function wptickets_reject_old_tickets_callback() {
    global $wpdb;
    $seven_days_ago = date( 'Y-m-d H:i:s', strtotime( '-7 days' ) );

    // Получаем тикеты, которые не обновлялись более 7 дней и не закрыты
    $tickets = $wpdb->get_results( $wpdb->prepare(
        "SELECT ID FROM {$wpdb->prefix}posts WHERE post_type = 'wpticket' AND post_status = 'publish' AND post_modified < %s",
        $seven_days_ago
    ) );

    foreach ( $tickets as $ticket ) {
        // Обновляем статус тикета на 'rejected'
        wp_update_post( array(
            'ID' => $ticket->ID,
            'post_status' => 'wptickets-rejected',
        ) );
    }
}

Этот код создаёт и регистрирует ежедневное событие, которое проверяет тикеты и меняет их статус на отклонённый, если они старше 7 дней без изменений.

Как расширить фильтр отклонения

Вы можете добавить дополнительные условия, например:

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

Для проверки комментариев можно использовать функцию get_comments() с фильтрацией по ID тикета, а для уведомлений – функцию wp_mail().

Пример кода с проверкой комментариев и уведомлением

function wptickets_reject_old_tickets_callback() {
    global $wpdb;
    $seven_days_ago = date( 'Y-m-d H:i:s', strtotime( '-7 days' ) );

    $tickets = $wpdb->get_results( $wpdb->prepare(
        "SELECT ID, post_author FROM {$wpdb->prefix}posts WHERE post_type = 'wpticket' AND post_status = 'publish' AND post_modified < %s",
        $seven_days_ago
    ) );

    foreach ( $tickets as $ticket ) {
        $comments = get_comments( array(
            'post_id' => $ticket->ID,
            'author__not_in' => array( $ticket->post_author ), // Комментарии не от автора тикета
            'count' => true
        ) );

        // Если комментариев от поддержки нет, отклоняем
        if ( $comments == 0 ) {
            wp_update_post( array(
                'ID' => $ticket->ID,
                'post_status' => 'wptickets-rejected',
            ) );

            // Отправка письма пользователю
            $user = get_userdata( $ticket->post_author );
            if ( $user ) {
                wp_mail(
                    $user->user_email,
                    'Ваш тикет был отклонён',
                    'Здравствуйте! Ваш тикет №' . $ticket->ID . ' был автоматически отклонён, так как не получил ответа и неактивен более 7 дней.'
                );
            }
        }
    }
}

Использование плагинов для расширения возможностей

Если вы предпочитаете готовые решения, обратите внимание на плагины для автоматизации поддержки WPtickets, например, WPtickets Pro, который имеет встроенные инструменты для автоматизации обработки тикетов, в том числе условия для автоматического отклонения и закрытия.

Также полезным будет плагин Clearfy Pro, который оптимизирует работу WordPress и может помочь с управлением Cron-задачами, делая автоматизацию более надёжной.

Рекомендации по безопасности и тестированию

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

Также следите за тем, чтобы уведомления пользователям отправлялись корректно и не попадали в спам. Для этого настройте корректную отправку почты в WordPress, например, через SMTP.

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

Как создать простую систему подписчиков в WordPress
11.11.2025
Как создать мультистор поддержку в WordPress: управление тикетами для нескольких сайтов
17.01.2026
Как удалить спам из формы тикетов WPtickets
17.04.2026
Как создать автоматический отчет по просмотру тикетов в WPtickets для WordPress
09.04.2026
Как решить проблемы с синхронизацией тикетов между несколькими сайтами на WordPress
16.06.2026