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

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

Основы работы с Cron и WP-Cron в WordPress

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

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

Что такое WP-Cron и как он работает

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

Для управления WP-Cron используются функции wp_schedule_event(), wp_clear_scheduled_hook() и хуки add_action().

Настройка системного Cron для WordPress

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

define('DISABLE_WP_CRON', true);

Затем настроить системный Cron на выполнение файла wp-cron.php каждую минуту или по нужному расписанию:

* * * * * wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Пример: создание автоматического отчёта и отправка на email

Рассмотрим пример, как с помощью WP-Cron создать задачу, которая раз в день будет формировать отчёт и отправлять его администратору сайта.

Шаг 1. Регистрация задачи при инициализации темы или плагина

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

Функция wpstudy_schedule_daily_report проверяет, есть ли уже запланированная задача с хуком wpstudy_send_daily_report. Если нет, то создаёт её с повторным запуском ежедневно.

Шаг 2. Создание функции-обработчика для отправки отчёта

function wpstudy_send_daily_report_callback() {
    $admin_email = get_option( 'admin_email' );
    $subject = 'Ежедневный отчёт сайта wpstudy.ru';

    // Формируем тело отчёта
    $post_count = wp_count_posts()->publish;
    $user_count = count_users()['total_users'];

    $message = "Отчёт за сегодня:\n";
    $message .= "Опубликованных записей: $post_count\n";
    $message .= "Всего пользователей: $user_count\n";

    // Отправка письма
    wp_mail( $admin_email, $subject, $message );
}
add_action( 'wpstudy_send_daily_report', 'wpstudy_send_daily_report_callback' );

Здесь мы получаем количество опубликованных постов и пользователей, формируем текст сообщения и отправляем на почту администратора.

Шаг 3. Проверка и отладка

Для тестирования можно временно изменить период задачи на 'hourly' или вызвать функцию вручную:

wpstudy_send_daily_report_callback();

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

Расширение функционала: отчёты в формате PDF и отправка через SMTP

Для более сложных отчётов можно генерировать PDF-файлы с помощью библиотек, например, TCPDF или mPDF. После генерации файл прикрепляется к письму.

Чтобы отправка почты была надёжной, рекомендуется использовать SMTP-сервисы. Плагин WP Mail SMTP поможет настроить почту через SMTP-серверы Gmail, SendGrid, Mailgun и другие.

Пример генерации PDF с помощью mPDF

require_once __DIR__ . '/vendor/autoload.php';

function wpstudy_generate_pdf_report() {
    $mpdf = new \Mpdf\Mpdf();
    $html = '<h1>Ежедневный отчёт</h1>';
    $html .= '<p>Дата: ' . date('Y-m-d') . '</p>';
    $html .= '<p>Количество записей: ' . wp_count_posts()->publish . '</p>';
    $mpdf->WriteHTML($html);

    $file = WP_CONTENT_DIR . '/uploads/daily-report-' . date('Ymd') . '.pdf';
    $mpdf->Output($file, 'F');
    return $file;
}

В функции создаётся PDF-файл с отчётом, который можно прикрепить к письму.

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

  • WP Crontrol — управление WP-Cron из админки, просмотр и удаление задач.
  • Advanced Cron Manager — расширенные функции управления задачами Cron.
  • WP Mail SMTP — настройка отправки писем через SMTP.
  • WP-CLI — запуск задач и управление сайтом через консоль, удобно для автоматизации.

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

Заключение: когда использовать системный Cron, а когда WP-Cron

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

Для отключения системного Cron и активации WP-Cron можно управлять настройками в wp-config.php и на уровне хостинга.

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

Как использовать хуки в WordPress для оптимизации кода
21.11.2025
Как добавить временные изменения в шаблон WordPress без плагинов
03.02.2026
Как добавить авторизацию по телефонному номеру в WordPress
21.03.2026
Изменение авторских прав в WordPress без использования плагинов
16.12.2025
Как использовать WooCommerce хуки для настройки страницы товара
17.04.2026