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

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

Зачем нужен автоматический импорт тикетов в WordPress

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

Импорт можно настроить для разных каналов: электронная почта, API внешних сервисов, CSV-файлы с данными. Важно, чтобы тикеты создавались с правильными полями, приоритетами и прикреплёнными файлами.

Обзор плагинов для импорта тикетов в WordPress

WPtickets и его возможности для импорта

Плагин WPtickets — мощное решение для поддержки клиентов с возможностями автоматизации. По умолчанию импорт писем реализован с помощью IMAP, но для более гибких сценариев потребуется кастомизация.

WPtickets позволяет создавать тикеты программно через функцию wpticketsru_create_ticket_from_import($data), что даёт возможность интегрироваться с любыми источниками данных.

Плагины для автоматического парсинга почты

Для автоматического получения писем и создания тикетов можно использовать плагины, работающие с почтовыми ящиками через IMAP, например:

  • Postie — импортирует почту в записи WordPress, можно адаптировать под создание тикетов.
  • WP Mail SMTP с расширением для обработки входящих писем.

Однако для полноценного импорта тикетов с кастомными полями часто требуется доработка кода.

Как написать функцию для импорта тикетов в WPtickets

Рассмотрим пример функции, которая будет создавать тикет из массива данных, полученных, например, при парсинге письма или API-запроса:

function wpticketsru_import_ticket_create($ticket_data) {
    if (empty($ticket_data['subject']) || empty($ticket_data['message']) || empty($ticket_data['user_email'])) {
        return new WP_Error('missing_data', 'Не хватает обязательных данных для создания тикета');
    }

    // Проверяем, существует ли пользователь, иначе создаём гостя
    $user = get_user_by('email', $ticket_data['user_email']);
    $user_id = $user ? $user->ID : 0;

    // Формируем аргументы для создания тикета
    $args = array(
        'post_title' => sanitize_text_field($ticket_data['subject']),
        'post_content' => wp_kses_post($ticket_data['message']),
        'post_type' => 'wptickets_ticket',
        'post_status' => 'publish',
        'post_author' => $user_id
    );

    // Создаём тикет
    $ticket_id = wp_insert_post($args);
    if (is_wp_error($ticket_id)) {
        return $ticket_id;
    }

    // Добавляем мета-данные: приоритет, категория, теги
    if (!empty($ticket_data['priority'])) {
        update_post_meta($ticket_id, '_wptickets_priority', sanitize_text_field($ticket_data['priority']));
    }
    if (!empty($ticket_data['category'])) {
        wp_set_object_terms($ticket_id, sanitize_text_field($ticket_data['category']), 'wptickets_category');
    }

    // Обработка вложений
    if (!empty($ticket_data['attachments']) && is_array($ticket_data['attachments'])) {
        foreach ($ticket_data['attachments'] as $file_path) {
            wpticketsru_attach_file_to_ticket($ticket_id, $file_path);
        }
    }

    return $ticket_id;
}

Функция wpticketsru_import_ticket_create принимает массив с ключами subject, message, user_email, priority, category и attachments. Она создаёт запись типа тикет, устанавливает метаданные и прикрепляет файлы.

Функция для прикрепления файлов к тикету

function wpticketsru_attach_file_to_ticket($ticket_id, $file_path) {
    if (!file_exists($file_path)) {
        return false;
    }

    $upload = wp_upload_bits(basename($file_path), null, file_get_contents($file_path));
    if ($upload['error']) {
        return false;
    }

    $filetype = wp_check_filetype($upload['file'], null);
    $attachment = array(
        'post_mime_type' => $filetype['type'],
        'post_title' => sanitize_file_name(basename($upload['file'])),
        'post_content' => '',
        'post_status' => 'inherit'
    );

    $attach_id = wp_insert_attachment($attachment, $upload['file'], $ticket_id);
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    $attach_data = wp_generate_attachment_metadata($attach_id, $upload['file']);
    wp_update_attachment_metadata($attach_id, $attach_data);

    // Связываем вложение с тикетом
    add_post_meta($ticket_id, '_wptickets_attachment', $attach_id);
    return $attach_id;
}

Примеры сценариев автоматического импорта

Импорт тикетов из почтового ящика через IMAP

Для автоматизации можно настроить скрипт, который будет подключаться к IMAP серверу и парсить новые письма. После получения письма извлекается тема, тело, адрес отправителя и вложения, затем вызывается wpticketsru_import_ticket_create.

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

Импорт из CSV-файлов

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

Рекомендуется запускать импорт через cron-задачу для регулярного обновления.

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

При реализации импорта важно учитывать:

  • Валидацию входящих данных — чтобы не создавать мусорные тикеты.
  • Права доступа — тикеты должны принадлежать корректным пользователям.
  • Обработку ошибок и логирование — для отладки и контроля процессов импорта.
  • Оптимизацию запросов, чтобы не перегружать базу при большом объёме.

Также стоит подумать о лимитах на размер вложений и типах разрешённых файлов.

Интеграция с другими плагинами WPShop

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

Для создания автоматических ответов на импортированные тикеты подойдёт WPtickets с расширенными автоответами, которые можно настраивать под тип обращения.

Как создать системный автоприкрепление файлов к тикетам в WordPress
12.01.2026
Как создать систему поддержки (тикетов) в WordPress
20.11.2025
Как решить проблемы с отправкой почты в WPtickets на WordPress
20.04.2026
Автоматическое отклонение тикетов в WPtickets: настройка и примеры
28.01.2026
Автоматизация обработки тикетов в WordPress: практическое руководство
13.12.2025