Как автоматически отправлять email из WordPress с помощью Cron

Автоматическая отправка email в WordPress — задача, с которой часто сталкиваются разработчики при реализации рассылок, уведомлений и других автоматизированных процессов. В этой статье разберёмся, как настроить такой функционал с помощью стандартного планировщика задач WP-Cron, а также рассмотрим примеры кода и полезные плагины для удобства и надежности.

Что такое WP-Cron и почему он удобен для автоматической отправки email

WP-Cron — встроенный в WordPress имитационный планировщик задач, который запускается при посещении сайта. Он позволяет запускать определенные функции по расписанию, например, отправлять email-уведомления, обновлять данные и так далее. Главное преимущество WP-Cron — отсутствие необходимости настраивать системный cron на сервере, что удобно для большинства хостингов.

Однако у WP-Cron есть и свои особенности: он зависит от посещаемости сайта и может запускаться с задержками. Для критичных задач рекомендуется использовать системный cron, который будет регулярно дергать wp-cron.php.

Настройка автоматической отправки email с помощью WP-Cron

Рассмотрим пример создания собственной задачи для отправки email по расписанию. Для этого нужно:

  • Зарегистрировать событие в WP-Cron.
  • Написать функцию отправки email.
  • Привязать функцию к событию.

1. Регистрация Cron события

Добавим в файл functions.php или в плагин следующий код для регистрации пользовательского интервала и события:

function wpfactory_add_cron_interval($schedules) {
    if (!isset($schedules['every_five_minutes'])) {
        $schedules['every_five_minutes'] = array(
            'interval' => 300, // 5 минут в секундах
            'display'  => __('Каждые 5 минут')
        );
    }
    return $schedules;
}
add_filter('cron_schedules', 'wpfactory_add_cron_interval');

function wpfactory_schedule_email_task() {
    if (!wp_next_scheduled('wpfactory_send_scheduled_email')) {
        wp_schedule_event(time(), 'every_five_minutes', 'wpfactory_send_scheduled_email');
    }
}
add_action('wp', 'wpfactory_schedule_email_task');

Этот код добавляет новый интервал 5 минут и планирует задачу wpfactory_send_scheduled_email, если она ещё не запланирована.

2. Функция отправки email

Теперь реализуем функцию, которая будет отправлять email:

function wpfactory_send_scheduled_email() {
    $to = 'user@example.com';
    $subject = 'Автоматическое письмо от WordPress';
    $message = 'Это письмо было отправлено автоматически с помощью WP-Cron.';
    $headers = array('Content-Type: text/html; charset=UTF-8');

    wp_mail($to, $subject, $message, $headers);
}
add_action('wpfactory_send_scheduled_email', 'wpfactory_send_scheduled_email');

В данном примере письмо отправляется на жёстко заданный адрес. В реальной задаче можно динамически выбирать адресатов, заголовки и содержимое письма.

Как повысить надёжность отправки email: использование системного cron и плагинов

WP-Cron запускается при обращении к сайту, что делает его не всегда точным. Чтобы обеспечить стабильную отправку писем:

  • Настройте системный cron на сервере, который каждые 5 минут будет запускать скрипт wp-cron.php. Например, в Linux добавьте задачу:
*/5 * * * * wget -q -O - https://ваш-сайт.ru/wp-cron.php?doing_wp_cron >/dev/null 2>&1
  • Используйте плагины для управления планировщиком и отправкой email. Например:
  • Clearfy — для управления WP-Cron и оптимизации процессов.
  • WPGPT — для генерации контента писем автоматически.

Пример расширения: отправка email с вложениями и динамическими данными

Для более сложных сценариев можно отправлять письма с вложениями и формировать контент на лету. Пример функции:

function wpfactory_send_email_with_attachment() {
    $to = 'user@example.com';
    $subject = 'Отчёт с вложением';
    $message = 'Здравствуйте! Во вложении вы найдёте отчёт за сегодня.';
    $headers = array('Content-Type: text/html; charset=UTF-8');
    $attachments = array(WP_CONTENT_DIR . '/uploads/report.pdf');

    wp_mail($to, $subject, $message, $headers, $attachments);
}
add_action('wpfactory_send_scheduled_email', 'wpfactory_send_email_with_attachment');

Здесь мы добавили вложение из папки uploads. Для динамического создания отчётов можно использовать сторонние библиотеки, например, TCPDF.

Советы по отладке и мониторингу отправки email

Для контроля успешной отправки писем:

  • Используйте плагин WPRemark для ведения логов и резервного хранения сообщений.
  • Проверяйте логи сервера и почтового сервера на предмет ошибок.
  • Тестируйте функцию отправки с разными параметрами и адресами.

Таким образом, автоматическая отправка email из WordPress с помощью Cron — гибкое и мощное решение для многих задач автоматизации. Используйте приведённые примеры кода и рекомендации, чтобы внедрить надежную систему уведомлений на вашем сайте.

Как сделать автоматические отзывы с оценками в WordPress
17.01.2026
Как найти и убрать дубли страниц в WordPress без потери SEO
16.08.2026
Как автоматизировать создание бэкапов в WordPress
13.01.2026
Как установить ограничение доступа к страницам WordPress
19.03.2026
Как создать динамические виджеты в WordPress
11.11.2025