Как добавить автоматическую отправку отчетов в WordPress

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

Дальше вы можете адаптировать код под собственные нужды — отчеты по заказам, тикетам, статистике пользователей и аналитике. Главное — правильно выбрать частоту и формат, чтобы не перегрузить почту и не пропустить важные данные.

Как автоматизировать расширенную обработку тикетов в WordPress
22.01.2026
Как использовать WP-Cron для автоматического удаления старых тикетов в WordPress
11.05.2026
Как использовать WP-CLI для управления тикетами в WordPress
07.06.2026
Как избежать проблем с множественными сессиями входа в WordPress
03.07.2026
Оптимизация обработки AJAX-запросов в тикет-системе WordPress
18.06.2026