Экспорт заказов WooCommerce в формате CSV — частая задача для последующего анализа, интеграции с другими системами или отчетности. В этой статье рассмотрим, как настроить автоматический экспорт заказов WooCommerce в CSV с помощью собственного кода и популярных плагинов, а также как отправлять результаты по email или сохранять на сервере по расписанию.
Почему нужен автоматический экспорт заказов WooCommerce
Ручной экспорт заказов через админ-панель WooCommerce неудобен при большом объеме данных и регулярных задачах. Автоматизация позволяет:
- Экспортировать новые заказы по расписанию без участия пользователя.
- Формировать файлы в нужном формате с кастомными полями.
- Отправлять отчеты ответственным сотрудникам или системам.
- Интегрироваться с бухгалтерией, CRM и другими сервисами.
Рассмотрим несколько подходов к реализации.
Способ 1. Использование плагина WP All Export
Плагин WP All Export — мощное решение для экспорта любых данных WordPress, включая заказы WooCommerce. Он поддерживает автоматический экспорт по расписанию и гибкую настройку CSV.
Основные шаги:
- Установите и активируйте плагин.
- Создайте новый экспорт, выбрав тип данных «Заказы WooCommerce».
- Настройте поля для экспорта — стандартные и пользовательские.
- Включите расписание автоматического экспорта (например, ежедневно в полночь).
- Настройте доставку файла по email или сохранение на сервер.
Такой подход не требует программирования и подходит для большинства задач.
Способ 2. Собственный скрипт экспорта заказов WooCommerce в CSV
Если нужен более гибкий и легковесный вариант, можно написать собственный PHP-скрипт, который выгружает заказы и сохраняет файл на сервере или отправляет на почту. Ниже пример реализации.
Пример кода: автоматический экспорт новых заказов за сутки
add_action('wporders_export_orders_daily_event', 'wporders_export_orders_to_csv');
function wporders_export_orders_to_csv() {
$args = array(
'status' => array('completed', 'processing'),
'date_created' => '>' . ( time() - DAY_IN_SECONDS ),
'limit' => -1,
);
$orders = wc_get_orders($args);
if (empty($orders)) {
return;
}
$filename = WP_CONTENT_DIR . '/uploads/orders_export_' . date('Y-m-d') . '.csv';
$file = fopen($filename, 'w');
// Заголовки CSV
fputcsv($file, array('ID', 'Дата', 'Клиент', 'Email', 'Сумма', 'Статус'));
foreach ($orders as $order) {
fputcsv($file, array(
$order->get_id(),
$order->get_date_created()->date('Y-m-d H:i:s'),
$order->get_billing_first_name() . ' ' . $order->get_billing_last_name(),
$order->get_billing_email(),
$order->get_total(),
$order->get_status(),
));
}
fclose($file);
// Отправка файла по email
$to = get_option('admin_email');
$subject = 'Экспорт заказов WooCommerce за ' . date('Y-m-d');
$message = 'Во вложении файл с заказами за последние 24 часа.';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $message, $headers, array($filename));
}
// Создаем событие для cron
if (!wp_next_scheduled('wporders_export_orders_daily_event')) {
wp_schedule_event(time(), 'daily', 'wporders_export_orders_daily_event');
}
Этот код регистрирует ежедневное событие, которое собирает заказы за последние сутки, формирует CSV и отправляет файл на email администратора сайта.
Объяснение кода
Функция wporders_export_orders_to_csv использует функцию wc_get_orders для выборки заказов с заданным статусом и датой создания. Затем данные записываются в CSV с помощью стандартных функций PHP. В конце файл отправляется на email с помощью wp_mail.
Расписание создается через wp_schedule_event, чтобы задача запускалась автоматически каждый день.
Способ 3. Использование WP-Cron и кастомных шорткодов для запуска экспорта вручную
Иногда нужно не только автоматизировать, но и запускать экспорт вручную с админки или фронтенда. Для этого можно сделать шорткод, который вызовет функцию экспорта и выведет ссылку на скачивание.
Пример шорткода для экспорта
function wporders_export_orders_shortcode() {
if (!current_user_can('manage_woocommerce')) {
return 'Доступ запрещен';
}
wporders_export_orders_to_csv();
$file_url = content_url('uploads/orders_export_' . date('Y-m-d') . '.csv');
return '<a href="' . esc_url($file_url) . '" target="_blank">Скачать экспорт заказов за сегодня</a>';
}
add_shortcode('wporders_export_orders', 'wporders_export_orders_shortcode');
Добавьте шорткод [wporders_export_orders] на страницу, и пользователи с правами администратора смогут получить актуальный экспорт заказов по клику.
Рекомендации по работе с экспортом заказов WooCommerce
- Всегда учитывайте защиту данных: не давайте доступ к экспорту неавторизованным пользователям.
- Оптимизируйте выборку заказов, если их много, используя пагинацию или фильтры.
- Используйте кастомные поля и метаданные, если нужно выгружать дополнительные данные.
- При больших объемах данных рассмотрите использование внешних сервисов и очередей задач.
- Для удобства добавьте в админку страницы с настройками экспорта.
Заключение
Автоматический экспорт заказов WooCommerce в CSV — важный инструмент для бизнес-аналитики и интеграции. Выбор решения зависит от задач и бюджета: от простого плагина WP All Export до собственного кода с WP-Cron и кастомными шорткодами. Код из статьи можно доработать под свои нужды и интегрировать с другими сервисами.
Если хотите расширить функционал сайта, советуем обратить внимание на Clearfy Pro — плагин для оптимизации и расширения WooCommerce, который упрощает работу с заказами и экспортом.