Диагностика задачи: зачем нужна автоматизация отчетов WooCommerce
Владельцы интернет-магазинов на WooCommerce часто нуждаются в регулярных отчетах по продажам, запасам и активности клиентов. Ручная генерация отчетов через админку неудобна и отнимает время. Автоматизация позволяет отправлять готовые данные на email в заданное время — это удобно для менеджеров и владельцев бизнеса.
Как собрать и отправить отчет WooCommerce на email: пошаговое решение
Шаг 1. Создаем кастомный PHP-скрипт для сбора данных
Используем функции WooCommerce и WP_Query для выборки заказов за период. Ниже пример кода, который собирает данные о заказах за последний день и формирует отчет в формате HTML:
function wpsync_generate_daily_report() {
$args = [
'limit' => -1,
'status' => ['completed', 'processing'],
'date_created' => '>' . ( new DateTime('-1 day') )->format('Y-m-d H:i:s'),
];
$orders = wc_get_orders($args);
$report = "<h2>Ежедневный отчет WooCommerce</h2>";
$report .= "<table border=1 cellpadding=5 cellspacing=0>";
$report .= "<tr><th>ID заказа</th><th>Дата</th><th>Сумма</th><th>Статус</th></tr>";
foreach ($orders as $order) {
$report .= "<tr>";
$report .= "<td>" . $order->get_id() . "</td>";
$report .= "<td>" . $order->get_date_created()->date('Y-m-d H:i') . "</td>";
$report .= "<td>" . wc_price($order->get_total()) . "</td>";
$report .= "<td>" . wc_get_order_status_name($order->get_status()) . "</td>";
$report .= "</tr>";
}
$report .= "</table>";
return $report;
}Шаг 2. Отправляем отчет на email с помощью wp_mail
Создаем функцию для отправки письма с отчетом и вызываем ее по cron-задаче:
function wpsync_send_daily_woocommerce_report() {
$to = 'manager@example.com';
$subject = 'Ежедневный отчет WooCommerce';
$message = wpsync_generate_daily_report();
$headers = ['Content-Type: text/html; charset=UTF-8'];
wp_mail($to, $subject, $message, $headers);
}Шаг 3. Регистрируем WP-Cron для автоматической отправки
Добавим событие, которое будет запускать отправку письма каждый день в 8:00:
if (!wp_next_scheduled('wpsync_daily_report_event')) {
wp_schedule_event(strtotime('08:00:00'), 'daily', 'wpsync_daily_report_event');
}
add_action('wpsync_daily_report_event', 'wpsync_send_daily_woocommerce_report');Проверка результата после внедрения
- Убедитесь, что wp-cron работает — проверьте логи или временно добавьте вызов
wpsync_send_daily_woocommerce_report()вручную через functions.php. - Проверьте, что письма приходят на указанный email с корректным HTML-отчетом и актуальными данными.
- Для отладки используйте плагин WP Mail Logging или аналогичный, чтобы видеть отправку почты внутри WordPress.
Частые ошибки и как их исправить
- Отсутствие писем: Проверьте настройки почты на хостинге, иногда wp_mail не работает без SMTP-плагина. Рекомендуется использовать WP Mail SMTP или аналог.
- WP-Cron не срабатывает: На некоторых серверах wp-cron запускается только при посещении сайта. Настройте системный cron для вызова
wp-cron.phpили используйте плагин для внешнего запуска. - Пустой отчет: Убедитесь, что в выбранный период есть заказы. Проверьте параметры в
wc_get_ordersи дату. - HTML в письме отображается как текст: Проверьте заголовок
Content-Type: text/htmlвwp_mail.
Практические советы по безопасности и производительности
- Для больших магазинов с тысячами заказов используйте пагинацию или ограничивайте количество заказов в отчете, чтобы избежать превышения памяти.
- Не отправляйте отчеты с личными данными клиентов без шифрования и согласия, соблюдайте GDPR и другие нормы.
- Храните адреса получателей вне публичного кода, например, в
wp-config.phpили настройках сайта. - Для повышения надежности отправки используйте SMTP-серверы и плагин WP Mail SMTP.
Сравнение способов автоматизации отчетов WooCommerce
| Метод | Плюсы | Минусы |
|---|---|---|
| Плагин отчетов (например, WooCommerce PDF Invoices) | Готовое решение, много функций, шаблоны | Зависимость от плагина, нагрузка, ограниченная кастомизация |
| Кастомный PHP-скрипт с wp_mail и WP-Cron | Максимальная гибкость, минимальные зависимости | Требует навыков, нужно тестировать и поддерживать |
| Внешние сервисы отчетности (Zapier, Integromat) | Автоматизация без кода, интеграция с другими сервисами | Платные, возможны задержки, зависимость от сторонних сервисов |