Автоматическая отправка отчетов — востребованная функция для тех, кто ведет сайты на WordPress и хочет получать регулярные уведомления о состоянии проекта, статистике или другой важной информации без участия администратора. В этой статье подробно разберем, как создать такую систему с помощью стандартных средств WordPress и дополнить её плагинами для удобства.
Почему автоматическая отправка отчетов важна в WordPress
Регулярные отчеты позволяют своевременно реагировать на проблемы, отслеживать эффективность изменений и держать команду в курсе состояния сайта. Особенно это актуально для сайтов с большим потоком данных, интернет-магазинов, проектов с тикет-системами и сложной аналитикой.
Настройка автоматической отправки экономит время, снижает человеческий фактор и помогает быстро принимать решения.
Реализация может быть кастомной — на основе wp_cron и wp_mail, либо с помощью специализированных плагинов, которые упрощают конфигурацию.
Использование wp_cron и wp_mail для отправки отчетов
Создаем функцию для генерации и отправки отчета
Первым шагом напишем функцию, которая формирует данные и отправляет письмо. Например, пусть это будет отчет по новым комментариям за последние 24 часа.
function wpticket_send_daily_report() {
$args = array(
'date_query' => array(
array(
'after' => '1 day ago',
),
),
'status' => 'approve',
'number' => 0,
);
$comments = get_comments($args);
$count = count($comments);
$message = "Отчет по комментариям за последние 24 часа:\n";
$message .= "Количество новых комментариев: $count\n\n";
foreach ($comments as $comment) {
$message .= "- " . $comment->comment_author . ": " . wp_trim_words($comment->comment_content, 10) . "\n";
}
$to = get_option('admin_email');
$subject = 'Ежедневный отчет комментариев на сайте';
wp_mail($to, $subject, $message);
}Добавляем задачу в wp_cron
Теперь нужно, чтобы функция запускалась автоматически каждый день. Для этого используем wp_cron.
add_action('wpticket_daily_report_event', 'wpticket_send_daily_report');
function wpticket_activate_cron() {
if (! wp_next_scheduled('wpticket_daily_report_event')) {
wp_schedule_event(time(), 'daily', 'wpticket_daily_report_event');
}
}
add_action('wp', 'wpticket_activate_cron');Так мы зарегистрировали ежедневное событие и привязали к нему нашу функцию отправки отчета.
Отключение cron при деактивации
Чтобы не оставлять задания после удаления кода, добавим очистку расписания:
function wpticket_deactivate_cron() {
$timestamp = wp_next_scheduled('wpticket_daily_report_event');
if ($timestamp) {
wp_unschedule_event($timestamp, 'wpticket_daily_report_event');
}
}
register_deactivation_hook(__FILE__, 'wpticket_deactivate_cron');Улучшение функционала с помощью плагинов
Плагин WP Crontrol для управления задачами cron
Если хочется визуально управлять и отлаживать задачи wp_cron, подойдет плагин WP Crontrol. Он позволяет просмотреть, добавить, изменить и удалить задачи cron прямо из админки.
Это удобно для проверки, корректировки времени отправки и устранения сбоев.
Плагин Expert Review для автоматической рассылки отчетов по ревью и обратной связи
Если на сайте используется плагин Expert Review, можно настроить автоматическую отправку отчетов об отзывах и экспертизах. Это упрощает контроль качества контента и сбор обратной связи.
Пример расширения: отправка отчетов в формате HTML с таблицами
Для большей информативности лучше использовать HTML-формат писем и структурировать данные в таблицы.
function wpticket_send_html_report() {
$comments = get_comments(array(
'date_query' => array(array('after' => '1 day ago')),
'status' => 'approve',
'number' => 0,
));
$message = '<h2>Отчет по комментариям за последние 24 часа</h2>';
if (empty($comments)) {
$message .= '<p>Новых комментариев нет.</p>';
} else {
$message .= '<table border="1" cellpadding="6" cellspacing="0">';
$message .= '<thead><tr><th>Автор</th><th>Комментарий</th></tr></thead>';
$message .= '<tbody>';
foreach ($comments as $comment) {
$message .= '<tr><td>' . esc_html($comment->comment_author) . '</td><td>' . esc_html(wp_trim_words($comment->comment_content, 15)) . '</td></tr>';
}
$message .= '</tbody></table>';
}
$to = get_option('admin_email');
$subject = 'Ежедневный HTML-отчет комментариев';
$headers = array('Content-Type: text/html; charset=UTF-8');
wp_mail($to, $subject, $message, $headers);
}Не забудьте заменить привязку функции в cron на новую, если используете этот код.
Рекомендации по надежности и безопасности
Для гарантированного срабатывания cron рекомендуем настроить системный cron на сервере, который будет вызывать wp-cron.php раз в 15 минут. Это гораздо надежнее, чем зависеть от посещений сайта.
Проверяйте корректность email-адресов для отправки и используйте SMTP с проверенным сервисом, например, через плагин WP Mail SMTP, чтобы избежать попадания писем в спам.
Не выводите в письмах конфиденциальные данные без шифрования, особенно если отправляете отчеты на внешние почтовые ящики.
Выводы и дальнейшие шаги
Автоматическая отправка отчетов в WordPress — задача, решаемая как кодом, так и плагинами. Мы рассмотрели создание простой системы с wp_cron и wp_mail, улучшение с HTML и таблицами, а также полезные плагины для управления задачами и автоматизацией обратной связи.
Дальше вы можете адаптировать код под собственные нужды — отчеты по заказам, тикетам, статистике пользователей и аналитике. Главное — правильно выбрать частоту и формат, чтобы не перегрузить почту и не пропустить важные данные.