Автоматизация создания отчётов — важная задача для многих сайтов на 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 — это значительно ускорит процесс и расширит возможности вашего сайта.