Как автоматизировать отправку email из WordPress с помощью хуков и PHPMailer

Автоматизация отправки email в WordPress – частая задача при разработке плагинов, тем и решений для сайта. Встроенные функции wp_mail() и класс PHPMailer позволяют гибко настроить процесс отправки сообщений. В этой статье разберём, как с помощью хуков и PHPMailer организовать автоматическую отправку писем, учитывая разные сценарии и обеспечивая надежность доставки.

Почему важно использовать хуки для отправки email в WordPress

Хуки (actions и filters) в WordPress – мощный инструмент для внедрения дополнительной логики без правки ядра. Использование хуков для отправки email позволяет:

  • Автоматически запускать отправку при определённых событиях — например, после публикации записи или регистрации пользователя.
  • Модифицировать содержимое письма через фильтры без изменения основного кода.
  • Интегрировать отправку в цепочки действий, например, логирование или уведомление админов.

Рассмотрим на примере, как с помощью action-хука wp_insert_post отправлять email при публикации новой записи.

Пример: Отправка письма при публикации новой записи

add_action('wp_insert_post', 'wpbloger_send_email_on_publish', 10, 3);
function wpbloger_send_email_on_publish($post_ID, $post, $update) {
    // Проверяем, что запись опубликована впервые
    if ($post->post_status !== 'publish' || $update) {
        return;
    }
    $to = 'admin@example.com';
    $subject = 'Новая публикация на сайте';
    $message = 'Опубликована новая запись: ' . $post->post_title . '\nСсылка: ' . get_permalink($post_ID);
    wp_mail($to, $subject, $message);
}

В этом примере при публикации новой записи на почту admin@example.com отправляется уведомление с заголовком и ссылкой.

Использование PHPMailer для расширенной настройки отправки email

WordPress использует класс PHPMailer для отправки писем через wp_mail(). С помощью фильтра phpmailer_init можно изменить настройки PHPMailer, например, настроить SMTP-сервер, добавить вложения или изменить заголовки.

Вот пример настройки SMTP через phpmailer_init:

add_action('phpmailer_init', 'wpbloger_configure_smtp');
function wpbloger_configure_smtp(PHPMailer $phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host = 'smtp.example.com';
    $phpmailer->SMTPAuth = true;
    $phpmailer->Port = 587;
    $phpmailer->Username = 'user@example.com';
    $phpmailer->Password = 'password';
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->From = 'noreply@example.com';
    $phpmailer->FromName = 'WPBloger';
}

Это позволит отправлять почту через ваш SMTP, что повысит вероятность доставки и уменьшит попадание писем в спам.

Автоматическая отправка email по расписанию с WP-Cron

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

add_action('wpbloger_daily_email_event', 'wpbloger_send_daily_report');
function wpbloger_send_daily_report() {
    $to = get_option('admin_email');
    $subject = 'Ежедневный отчет';
    $message = 'Это ваш ежедневный отчет с сайта.';
    wp_mail($to, $subject, $message);
}

// Регистрация события при активации темы или плагина
if (!wp_next_scheduled('wpbloger_daily_email_event')) {
    wp_schedule_event(time(), 'daily', 'wpbloger_daily_email_event');
}

// Отмена cron при деактивации
register_deactivation_hook(__FILE__, function() {
    wp_clear_scheduled_hook('wpbloger_daily_email_event');
});

С помощью этого решения вы сможете организовать регулярные рассылки без сторонних плагинов.

Советы по надежной отправке email в WordPress

Выбор метода отправки

По умолчанию wp_mail() использует функцию PHP mail(). Это просто, но часто письма не доходят. Настройка SMTP через PHPMailer решает проблему и позволяет использовать авторизацию и шифрование.

Обработка ошибок отправки

Для отладки полезно проверять результат wp_mail() и логировать ошибки. Например:

$sent = wp_mail($to, $subject, $message);
if (!$sent) {
    error_log('Ошибка отправки письма на ' . $to);
}

Защита от спама и нагрузок

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

Заключение

Автоматизация email в WordPress с помощью хуков и PHPMailer – эффективный способ реализовать уведомления, рассылки и интеграции. Используйте action-хуки для запуска отправки, фильтр phpmailer_init для настройки SMTP и WP-Cron для регулярных задач. Это даст вам гибкий и надежный инструмент для работы с почтой на сайте.

Для расширенных возможностей рекомендуем также познакомиться с плагином Clearfy Pro, который среди прочего оптимизирует работу с почтой и безопасностью WordPress.

Добавить уникальные поля в формы регистрации WordPress с подтверждением
21.02.2026
Как создать динамические виджеты в WordPress с помощью REST API
03.04.2026
Удалить кэш в WordPress: практические способы и код для очистки
10.11.2025
Как использовать фильтр YITH WooCommerce Wishlist для добавления собственных критериев
16.01.2026
Оптимизация загрузки картинок в WordPress: практические методы
26.11.2025