Как создать автоматические отчёты в WordPress с помощью WP-Cron и PHP

Автоматизация генерации отчётов — важная задача для многих сайтов на WordPress, особенно если нужно регулярно собирать данные и отправлять их пользователям или администраторам. В этой статье подробно разберём, как создать автоматические отчёты с помощью встроенного планировщика задач WP-Cron и PHP, а также рассмотрим примеры полезных плагинов и куски кода, которые можно использовать для своих проектов.

Что такое WP-Cron и почему его стоит использовать для автоматизации отчётов

WP-Cron — это имитация системного cron, встроенная в WordPress. Она позволяет выполнять задачи по расписанию без необходимости доступа к серверному cron. Это удобно, когда у вас нет доступа к серверным настройкам, но нужно запускать задачи, например, генерацию отчётов, очистку кэша, рассылку писем и так далее.

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

Для создания автоматических отчётов WP-Cron отлично подходит, потому что:

  • Не требует дополнительной настройки сервера.
  • Легко интегрируется в существующий код WordPress.
  • Позволяет гибко настроить периодичность выполнения задач.

Недостатки WP-Cron

Главный минус — зависимость от посещений сайта. Если трафика мало, задачи могут задерживаться. Для критичных задач лучше настроить системный cron с вызовом wp-cron.php.

Пошаговое создание автоматического отчёта с WP-Cron

Рассмотрим пример: нам нужно ежедневно собирать статистику по заказам и отправлять отчёт на e-mail администратору.

1. Добавляем задачу в расписание WP-Cron

Для начала зарегистрируем новое событие, если оно ещё не зарегистрировано.

function wpcalc_register_cron_event() {
    if ( ! wp_next_scheduled( 'wpcalc_daily_report_event' ) ) {
        wp_schedule_event( time(), 'daily', 'wpcalc_daily_report_event' );
    }
}
add_action( 'wp', 'wpcalc_register_cron_event' );

Здесь мы проверяем, не запланировано ли уже событие wpcalc_daily_report_event, и если нет — создаём ежедневный запуск.

2. Создаём функцию обработки события

Теперь напишем функцию, которая будет формировать отчёт и отправлять его.

function wpcalc_generate_and_send_report() {
    // Получаем заказы за последние 24 часа (пример с WooCommerce)
    $args = [
        'limit' => -1,
        'status' => 'completed',
        'date_created' => '>' . ( time() - DAY_IN_SECONDS ),
    ];
    $orders = wc_get_orders( $args );

    $total_sales = 0;
    $orders_count = count($orders);

    foreach ( $orders as $order ) {
        $total_sales += $order->get_total();
    }

    $message = "Отчёт по заказам за последние 24 часа:\n";
    $message .= "Всего заказов: " . $orders_count . "\n";
    $message .= "Общая сумма продаж: " . wc_price( $total_sales ) . "\n";

    wp_mail( get_option('admin_email'), 'Ежедневный отчёт по заказам', $message );
}
add_action( 'wpcalc_daily_report_event', 'wpcalc_generate_and_send_report' );

В этом коде мы используем функции WooCommerce для получения заказов, считаем их количество и сумму, формируем текст письма и отправляем на e-mail администратора сайта.

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

Чтобы не оставлять запланированные задачи после удаления кода, добавим очистку при деактивации:

function wpcalc_deactivate_cleanup() {
    $timestamp = wp_next_scheduled( 'wpcalc_daily_report_event' );
    if ( $timestamp ) {
        wp_unschedule_event( $timestamp, 'wpcalc_daily_report_event' );
    }
}
register_deactivation_hook( __FILE__, 'wpcalc_deactivate_cleanup' );

Расширяем функционал: создание отчёта в файле и прикрепление к письму

Отправка простого текста подходит не всегда. Часто нужно сформировать отчёт в формате CSV или PDF для удобства анализа.

Генерация CSV отчёта

Пример создания CSV-файла с заказами:

function wpcalc_generate_csv_report( $orders ) {
    $csv = "ID,Дата,Сумма\n";
    foreach ( $orders as $order ) {
        $csv .= $order->get_id() . ',' . $order->get_date_created()->date('Y-m-d H:i:s') . ',' . $order->get_total() . "\n";
    }
    return $csv;
}

Далее в функции отправки отчёта сохраним файл во временную директорию и прикрепим к письму:

function wpcalc_generate_and_send_report_with_attachment() {
    $args = [
        'limit' => -1,
        'status' => 'completed',
        'date_created' => '>' . ( time() - DAY_IN_SECONDS ),
    ];
    $orders = wc_get_orders( $args );

    $csv_content = wpcalc_generate_csv_report( $orders );
    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/daily_order_report.csv';
    file_put_contents( $file_path, $csv_content );

    $to = get_option('admin_email');
    $subject = 'Ежедневный отчёт по заказам с вложением CSV';
    $message = 'Во вложении файл с отчётом по заказам за последние 24 часа.';
    $headers = [];
    $attachments = [$file_path];

    wp_mail( $to, $subject, $message, $headers, $attachments );
    // Можно удалить файл после отправки
    unlink($file_path);
}
add_action( 'wpcalc_daily_report_event', 'wpcalc_generate_and_send_report_with_attachment' );

Полезные плагины для расширения возможностей автоматических отчётов

Если не хочется писать весь код самостоятельно, можно использовать плагины, которые помогут:

  • WP Crontrol — позволяет управлять задачами WP-Cron через админку, смотреть расписание и добавлять свои события без кода.
  • Advanced Cron Manager — расширенный менеджер cron, удобен для отладки и контроля.
  • WP Reports — плагин для создания отчётов по аналитике и другим данным с возможностью планирования.

Также для создания отчётов с визуализацией можно использовать плагин Expert Review от WPSHOP, который позволяет строить отчёты и обзоры с автоматическим обновлением данных.

Советы по оптимизации и безопасности автоматических отчётов

При автоматизации важно учитывать нагрузку на сервер и безопасность:

  • Не ставьте слишком частый запуск задач — достаточно раз в сутки или по необходимости.
  • Проверяйте, что в отчётах нет конфиденциальных данных, если письма уходят внешним адресатам.
  • Используйте nonce и права доступа, если отчёты можно запускать вручную через интерфейс.
  • Логируйте ошибки и успешные запуски для диагностики.

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

Итог

Автоматические отчёты — мощный инструмент для мониторинга и анализа данных на сайте WordPress. Использование WP-Cron и PHP позволяет организовать гибкую и удобную систему без зависимости от внешних сервисов и сложных настроек сервера. Приведённые примеры помогут быстро внедрить базовую функциональность и расширять её под свои задачи.

WooCommerce: решение проблем с отправкой данных калькулятора в заказ
10.06.2026
Как отладить и оптимизировать медленные запросы к базе данных WordPress
05.03.2026
Как использовать Hooks и Filters в WordPress для решения конкретных задач
24.11.2025
Как использовать WP-Cron для автоматизации задач в WordPress
22.03.2026
Как реализовать автоматические расчёты по нескольким формам в WordPress
16.04.2026