Автоматизация сборки и отправки отчетов WooCommerce на email

Диагностика задачи: зачем нужна автоматизация отчетов 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)Автоматизация без кода, интеграция с другими сервисамиПлатные, возможны задержки, зависимость от сторонних сервисов
Как запретить загрузку внешних iframe в WordPress для безопасности сайта
03.05.2026
Как сделать свойства пользователя в WordPress через пользовательские мета-поля
07.03.2026
Как избежать ошибок при синхронизации WooCommerce атрибутов между сайтами WordPress
27.05.2026
Как синхронизировать статьи между сайтами WordPress без плагинов
25.04.2026
Как сделать свойства пользователя в WordPress без плагинов
15.02.2026