Как автоматизировать создание и отправку email отчёта в WordPress

В этой статье подробно разберём, как создать в 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, который позволяет создавать кастомные отчёты и отправлять их по расписанию.

Как добавить временную активацию плагинов WordPress для тестирования
17.02.2026
Как создать динамические таблицы в WordPress с помощью шорткода
15.03.2026
Как удалить неиспользуемые meta данные в WordPress без плагинов
06.02.2026
Как отключить возможность изменения адреса доставки в WooCommerce после оформления заказа
12.05.2026
Как добавить дополнительное поле в форму регистрации WordPress с помощью кода
06.01.2026

Хотите научиться создавать сайты и зарабатывать на этом от 30 000 рублей в месяц?

Записаться на курс сейчас