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

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

Что такое CRON и зачем он нужен в WordPress

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

Для создания автоматических отчётов нам важно настроить либо системный CRON, либо использовать WP-Cron с дополнительными проверками, чтобы задачи выполнялись вовремя и без сбоев.

Основные преимущества использования CRON для отчётов:

  • Автоматический запуск без участия пользователя;
  • Гибкое расписание (ежедневно, еженедельно, ежемесячно);
  • Возможность отправлять отчёты по email или сохранять в базе/файлах;
  • Экономия времени и ресурсов за счёт планирования вне пиковых нагрузок.

Настройка WP-Cron для автоматической генерации отчётов

WP-Cron запускается при запросах к сайту, что не всегда гарантирует своевременное выполнение задач. Чтобы проверить регистрацию CRON-задачи, используйте функцию wpcalc_cron_scheduled_report, которая будет генерировать отчёт.

Регистрация события и хука

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

add_action('wpcalc_generate_report_hook', 'wpcalc_generate_report_function');

function wpcalc_generate_report_function() {
    // Здесь будет логика генерации отчёта
}

Этот код регистрирует ежедневное событие, которое запускает функцию генерации отчёта.

Создание отчёта и отправка на email

Для примера создадим простой отчёт по количеству опубликованных записей за день и отправим его на указанный email.

function wpcalc_generate_report_function() {
    $today = date('Y-m-d');
    $args = [
        'date_query' => [
            [
                'after'     => $today . ' 00:00:00',
                'before'    => $today . ' 23:59:59',
                'inclusive' => true,
            ],
        ],
        'post_type' => 'post',
        'post_status' => 'publish',
        'fields' => 'ids',
    ];

    $query = new WP_Query($args);
    $count = $query->found_posts;

    $subject = 'Ежедневный отчёт за ' . $today;
    $message = 'Количество опубликованных записей сегодня: ' . $count;
    $to = 'your-email@example.com'; // Замените на нужный email

    wp_mail($to, $subject, $message);
}

Вместо простого текста можно формировать HTML-отчёт, добавлять таблицы, графики и другую статистику.

Использование системного CRON для повышения надёжности

WP-Cron зависит от посещаемости сайта. Если трафик низкий, задачи могут не сработать вовремя. Чтобы решить эту проблему, рекомендуется отключить WP-Cron и настроить системный CRON.

Для этого в файле wp-config.php добавьте строку:

define('DISABLE_WP_CRON', true);

Далее создайте CRON-задачу на сервере, которая будет вызывать wp-cron.php с нужной периодичностью:

* * * * * wget -q -O - https://your-site.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Это гарантирует выполнение CRON-задач даже при низком трафике.

Примеры полезных плагинов для отчётов и автоматизации

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

  • Clearfy Pro — плагин для оптимизации и автоматизации задач, включая отчёты и CRON-настройки;
  • WPRemark — удобный инструмент, который можно адаптировать для создания и отправки отчётов;
  • Плагины для email-рассылок (например, MailPoet), которые интегрируются с WordPress и позволяют автоматизировать отправку сгенерированных данных.

Расширение функционала: сохранение отчётов в базе или файлах

Кроме отправки по email, полезно сохранять отчёты для анализа и истории. Например, можно записывать данные в кастомную таблицу базы данных или создавать CSV/Excel файлы.

Пример сохранения отчёта в файл CSV

function wpcalc_save_report_csv($data, $filename = 'daily_report.csv') {
    $upload_dir = wp_upload_dir();
    $file_path = $upload_dir['basedir'] . '/' . $filename;

    $file = fopen($file_path, 'w');
    foreach ($data as $row) {
        fputcsv($file, $row);
    }
    fclose($file);

    return $file_path;
}

function wpcalc_generate_report_function() {
    $today = date('Y-m-d');
    $data = [
        ['Дата', 'Публикаций'],
        [$today, 10], // Пример данных
    ];
    $file_path = wpcalc_save_report_csv($data);
    // Далее можно отправить файл на email или сохранить для скачивания
}

Такой файл можно прикреплять к письмам или предоставлять через личный кабинет.

Советы по отладке и мониторингу CRON-задач

Чтобы убедиться, что задачи выполняются, используйте плагины типа WP Crontrol, которые отображают запланированные события и позволяют запускать их вручную.

Также рекомендуем вести логирование внутри функции генерации отчёта, чтобы быстро находить ошибки.

Пример простой системы логов

function wpcalc_log($message) {
    if (!file_exists(WP_CONTENT_DIR . '/wpcalc-logs')) {
        mkdir(WP_CONTENT_DIR . '/wpcalc-logs', 0755, true);
    }
    $file = WP_CONTENT_DIR . '/wpcalc-logs/cron.log';
    file_put_contents($file, date('Y-m-d H:i:s') . ' - ' . $message . "\n", FILE_APPEND);
}

function wpcalc_generate_report_function() {
    wpcalc_log('Начало генерации отчёта');
    // Логика отчёта
    wpcalc_log('Отчёт успешно сгенерирован');
}

Заключение

Создание автоматических отчётов в WordPress с помощью CRON и PHP позволяет значительно упростить мониторинг и управление сайтом. Вы можете адаптировать предложенный код под свои задачи, добавлять сложные вычисления, интеграцию с внешними сервисами и удобные уведомления.

Если нужна готовая платформа для автоматизации и оптимизации, обратите внимание на Clearfy Pro — это значительно ускорит процесс и расширит возможности вашего сайта.

Как удалить зависимые отзывы в WooCommerce без потери данных
24.05.2026
Как создать калькулятор комплексных расчётов с виджетами в WordPress
26.03.2026
Как использовать Hooks и Filters в WordPress для решения конкретных задач
24.11.2025
WooCommerce: как сохранить данные калькулятора в метаполях заказа
22.06.2026
Как сохранить данные калькулятора в Cookie и использовать их в WooCommerce
08.06.2026