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

Диагностика задачи: зачем нужен автоматический экспорт тикетов

При работе с WPtickets часто возникает необходимость выгружать данные тикетов для анализа, отчетности или передачи в CRM. Ручной экспорт через админку неудобен и занимает время. Автоматический экспорт в CSV с регулярной отправкой на email или сохранением на сервер решает эту проблему.

Подготовка: проверяем возможности WPtickets и WordPress

WPtickets не имеет встроенного автоматического экспорта, но предоставляет API и хуки для расширений. Нам понадобится написать кастомный PHP-скрипт, который:

  • Запрашивает тикеты через WP_Query или WPtickets API;
  • Формирует CSV-файл;
  • Сохраняет файл на сервер или отправляет по email;
  • Запускается регулярно через WP-Cron.

Шаг 1. Получение тикетов из базы

Используем WP_Query для выборки тикетов (тип записи wp_ticket или подобный, зависит от конфигурации WPtickets):

$args = [
    'post_type' => 'wp_ticket',
    'posts_per_page' => -1,
    'post_status' => 'any'
];
$ticket_query = new WP_Query($args);

В цикле получаем нужные поля: ID, заголовок, статус, дата создания и кастомные мета.

Шаг 2. Формирование CSV

Создаем CSV в памяти и записываем строки с заголовками и данными:

$csv_data = fopen('php://temp', 'r+');
fputcsv($csv_data, ['ID', 'Заголовок', 'Статус', 'Дата создания']);

foreach ($ticket_query->posts as $post) {
    $status = get_post_status($post->ID);
    $date = get_the_date('Y-m-d H:i:s', $post);
    fputcsv($csv_data, [$post->ID, $post->post_title, $status, $date]);
}
fseek($csv_data, 0);
$csv_content = stream_get_contents($csv_data);
fclose($csv_data);

Шаг 3. Сохранение файла и отправка по email

Для сохранения на сервер:

$upload_dir = wp_upload_dir();
$file_path = $upload_dir['basedir'] . '/tickets_export_' . date('Ymd_His') . '.csv';
file_put_contents($file_path, $csv_content);

Для отправки по email с вложением:

$to = 'admin@example.com';
$subject = 'Экспорт тикетов WPtickets ' . date('Y-m-d');
$headers = ['Content-Type: text/html; charset=UTF-8'];
$attachments = [$file_path];
wp_mail($to, $subject, 'В приложении экспорт тикетов.', $headers, $attachments);

Шаг 4. Автоматизация через WP-Cron

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

if (!wp_next_scheduled('wptickets_export_daily')) {
    wp_schedule_event(strtotime('tomorrow midnight'), 'daily', 'wptickets_export_daily');
}

add_action('wptickets_export_daily', 'wptickets_export_function');

function wptickets_export_function() {
    // Тут код экспорта из шагов 1–3
}

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

  • Выполнить вручную функцию экспорта (например, вызвав wptickets_export_function() из консоли WP-CLI или временно через admin_init).
  • Проверить, что CSV-файл создается в uploads и содержит актуальные данные.
  • Проверить получение письма с вложением.
  • Убедиться, что WP-Cron срабатывает: посмотреть cron задачи через плагин WP Crontrol или командой wp cron event list.

Частые ошибки и их исправление

  • Пустой CSV файл: Возможно, нет тикетов или неверно указан post_type. Проверить запрос и статус постов.
  • Письмо не отправляется: Проверьте настройки SMTP, логи ошибок, используйте SMTP-плагин.
  • WP-Cron не срабатывает: На некоторых хостингах WP-Cron работает только при посещении сайта. Настройте системный cron или используйте плагин для имитации.
  • Права на запись в uploads: Убедитесь, что PHP может создавать файлы в папке uploads.

Практические советы по безопасности и производительности

  • Ограничьте доступ к экспорту: запуск функций только для администраторов.
  • При большом количестве тикетов делайте выборку порциями, чтобы избежать превышения лимита памяти.
  • Храните экспортированные файлы ограниченное время, чтобы не перегружать диск.
  • Используйте транзиенты для кеширования результатов, если экспорт часто вызывается.

Сравнение вариантов реализации экспорта тикетов

МетодПреимуществаНедостатки
Ручной экспорт через админку WPticketsПросто, без кодаНельзя автоматизировать, неудобно при больших объемах
Кастомный PHP-скрипт с WP-CronПолный контроль, автоматизация, гибкостьТребует навыков программирования и настройки cron
Плагины экспорта CSV (общие)Быстрая установкаМогут не поддерживать кастомные типы и мета WPtickets
Как создать автозакрытие тикетов в WPtickets для эффективного управления поддержкой
08.01.2026
Как создать автоматический экспорт тикетов из WPtickets в CSV
30.04.2026
Отладка ошибок оплаты и обновление статуса заказов в WooCommerce
24.06.2026
Как использовать WooCommerce для продажи подписок и автоплатежей в WordPress
04.07.2026
Как безопасно удалить удалённые тикеты из базы WPtickets для оптимизации WordPress
26.04.2026