В этой статье подробно разберём, как создать в WordPress автоматическую систему формирования и отправки email отчётов. Это полезно для администраторов сайтов, маркетологов и владельцев бизнеса, которым нужно регулярно получать сводки по активности сайта, заказам, пользователям и другим важным данным без ручного труда.
Почему автоматизация email отчётов важна для WordPress-сайтов
Ручная подготовка отчётов отнимает время и увеличивает риск ошибок. Автоматизация позволяет:
- Экономить время владельцев и менеджеров сайта;
- Получать актуальную информацию в нужное время (ежедневно, еженедельно, ежемесячно);
- Увеличить оперативность принятия решений на основе данных;
- Минимизировать человеческий фактор и забывчивость.
Для WordPress есть множество способов организовать такую автоматизацию, включая плагины и кастомные решения на PHP с использованием WP Cron.
Использование плагина для автоматической отправки отчётов
Самый простой способ — найти готовый плагин, например, Clearfy Pro. Он позволяет настроить регулярные задачи, в том числе отправку email с отчётами по активности сайта и его оптимизации.
Однако часто нужны более тонкие и уникальные отчёты, которые лучше создавать самостоятельно.
Как создать кастомный email отчёт с помощью WP Cron и PHP
Используем WP Cron — встроенный планировщик задач WordPress. Он позволяет запускать наши функции по расписанию.
Шаг 1. Регистрируем планируемое событие
function wpcourse_schedule_email_report() {
if ( ! wp_next_scheduled( 'wpcourse_send_email_report' ) ) {
wp_schedule_event( time(), 'daily', 'wpcourse_send_email_report' );
}
}
add_action( 'wp', 'wpcourse_schedule_email_report' );
Этот код проверяет, есть ли уже задача на ежедневную отправку и, если нет, создаёт её.
Шаг 2. Создаём функцию, которая формирует и отправляет отчёт
function wpcourse_send_email_report() {
// Получаем нужные данные для отчёта
$user_count = count_users()['total_users'];
$post_count = wp_count_posts()->publish;
$comment_count = wp_count_comments()->approved;
// Формируем тело письма
$message = "Отчёт за сегодня:\n";
$message .= "Пользователей на сайте: " . $user_count . "\n";
$message .= "Опубликованных записей: " . $post_count . "\n";
$message .= "Одобренных комментариев: " . $comment_count . "\n";
// Отправляем email
wp_mail( 'admin@example.com', 'Ежедневный отчёт сайта', $message );
}
add_action( 'wpcourse_send_email_report', 'wpcourse_send_email_report' );
Замените admin@example.com на нужный адрес получателя.
Шаг 3. Добавляем дополнительные интервалы, если нужно
По умолчанию WordPress поддерживает интервалы 'hourly', 'twicedaily' и 'daily'. Если нужно, например, еженедельное выполнение, добавим свой интервал:
function wpcourse_cron_schedules( $schedules ) {
if ( ! isset( $schedules['weekly'] ) ) {
$schedules['weekly'] = array(
'interval' => 604800, // 7 дней в секундах
'display' => 'Еженедельно'
);
}
return $schedules;
}
add_filter( 'cron_schedules', 'wpcourse_cron_schedules' );
После этого в функции планирования можно использовать 'weekly' вместо 'daily'.
Пример расширенного отчёта с данными из WooCommerce
Если на сайте установлен WooCommerce, полезно получать отчёты о продажах и заказах.
function wpcourse_send_woocommerce_report() {
if ( ! class_exists( 'WooCommerce' ) ) {
return; // WooCommerce не активен
}
$args = array(
'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( 'admin@example.com', 'Ежедневный отчёт WooCommerce', $message );
}
add_action( 'wpcourse_send_email_report', 'wpcourse_send_woocommerce_report' );
Можно объединить данные из разных источников в один отчёт или отправлять отдельные письма.
Советы по надежности и отладке автоматических email отчётов
Чтобы ваша система работала стабильно, имейте в виду:
- WP Cron запускается при заходе пользователей на сайт. Если трафик низкий, задачи могут не запускаться вовремя. Для критичных задач лучше настроить системный cron на сервере, который вызывает
wp-cron.php. - Проверьте, что функция
wp_mail()корректно настроена и письма не попадают в спам. Для этого можно использовать SMTP-плагины. - Добавляйте логирование в функции для отладки. Например, записывайте в файл или в лог WordPress успешные и неуспешные попытки отправки.
- Используйте фильтры и хуки WordPress для расширения функционала без изменения ядра.
Пример логирования отправки email отчёта
function wpcourse_send_email_report() {
$to = 'admin@example.com';
$subject = 'Ежедневный отчёт сайта';
$message = '...'; // формируем сообщение как в предыдущих примерах
$sent = wp_mail( $to, $subject, $message );
if ( $sent ) {
error_log( date('Y-m-d H:i:s') . " Email report sent successfully to {$to}\n", 3, WP_CONTENT_DIR . '/wpcourse_email_report.log' );
} else {
error_log( date('Y-m-d H:i:s') . " Failed to send email report to {$to}\n", 3, WP_CONTENT_DIR . '/wpcourse_email_report.log' );
}
}
Заключение
Автоматизация создания и отправки email отчётов в WordPress — реальная и полезная задача, которую можно решить как с помощью плагинов, так и самостоятельно через WP Cron и PHP. Выше мы рассмотрели базовый и расширенный примеры с кодом, которые помогут быстро настроить такие отчёты под ваши нужды.
Для более сложных отчётов советуем изучить возможности плагина Expert Review, который позволяет создавать кастомные отчёты и отправлять их по расписанию.