Как создать массовое сообщение в WordPress с помощью PHP

Почему важно уметь создавать массовые сообщения в WordPress

Массовые сообщения — это отличный способ быстро донести важную информацию до большого количества пользователей вашего сайта. Это может быть уведомление о технических работах, акциях, обновлениях или персонализированные рассылки. В WordPress нет встроенного функционала для сложных массовых сообщений, поэтому умение реализовать это самостоятельно с помощью PHP — ценный навык для разработчика.

В этой статье мы подробно рассмотрим, как создать массовое сообщение с помощью PHP, используя стандартные возможности WordPress, а также рассмотрим примеры популярных плагинов и создадим свой простой функционал. Такой подход поможет вам адаптировать рассылки под конкретные задачи.

Основные способы организации массовых сообщений в WordPress

Существует несколько подходов для реализации массовых сообщений:

  • Отправка email-рассылок с помощью сторонних сервисов и их интеграция с WordPress.
  • Использование плагинов для уведомлений и рассылок, которые добавляют интерфейс и автоматизацию.
  • Создание собственного PHP-кода для гибкого контроля и кастомизации.

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

Почему не всегда подходят готовые плагины

Хотя плагинов много, их функционал часто избыточен или не соответствует точным требованиям. К тому же, сторонние сервисы могут стоить денег и не всегда гарантируют контроль данных.

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

Пример создания массового email-сообщения с помощью PHP в WordPress

Для начала нам понадобится функция, которая отправит письмо группе пользователей. Предположим, мы хотим отправить письмо всем подписчикам с ролью "subscriber".

function wpkit_send_mass_email($subject, $message) {
    $args = array(
        'role'    => 'subscriber',
        'orderby' => 'user_nicename',
        'order'   => 'ASC'
    );

    $users = get_users($args);

    foreach ($users as $user) {
        wp_mail($user->user_email, $subject, $message);
    }
}

Эта функция получает список пользователей с указанной ролью и отправляет каждому письмо через стандартную функцию WordPress wp_mail. Теперь можно вызвать эту функцию, например, из административной части или при срабатывании определённого события.

Добавим проверку и логирование

Чтобы сделать код более надёжным, добавим проверку успешности отправки и логируем результаты:

function wpkit_send_mass_email($subject, $message) {
    $args = array('role' => 'subscriber');
    $users = get_users($args);
    $success_count = 0;
    $fail_count = 0;

    foreach ($users as $user) {
        $sent = wp_mail($user->user_email, $subject, $message);
        if ($sent) {
            $success_count++;
        } else {
            $fail_count++;
            error_log('Failed to send email to: ' . $user->user_email);
        }
    }

    return array('success' => $success_count, 'failed' => $fail_count);
}

Теперь функция возвращает статистику, что очень удобно для контроля массовой рассылки.

Пример использования плагина WP Mail SMTP для улучшения доставки

Стандартная функция wp_mail использует PHP mail(), которая не всегда надёжна. Рекомендуется установить плагин WP Mail SMTP, который позволяет настроить SMTP-сервер, Gmail или другие сервисы для улучшения доставки писем.

После установки и настройки плагина массовая отправка с помощью нашего кода будет работать стабильнее и письма не попадут в спам.

Настройка WP Mail SMTP

  1. Установите и активируйте плагин через админку WordPress.
  2. Перейдите в Настройки > WP Mail SMTP.
  3. Выберите нужный SMTP-сервер (например, Gmail, Mailgun, SendGrid).
  4. Введите параметры подключения и сохраните изменения.

После этого любые вызовы wp_mail будут использовать выбранный SMTP-сервер.

Создание кастомного плагина для массовых сообщений

Чтобы интегрировать код в удобном виде, создадим простой плагин. Создайте папку wpkit-mass-email в каталоге wp-content/plugins и файл wpkit-mass-email.php со следующим содержимым:

<?php
/**
 * Plugin Name: WPKit Mass Email
 * Description: Отправка массовых email сообщений подписчикам.
 * Version: 1.0
 * Author: WPKit
 */

function wpkit_send_mass_email($subject, $message) {
    $args = array('role' => 'subscriber');
    $users = get_users($args);
    $success_count = 0;
    $fail_count = 0;

    foreach ($users as $user) {
        $sent = wp_mail($user->user_email, $subject, $message);
        if ($sent) {
            $success_count++;
        } else {
            $fail_count++;
            error_log('Failed to send email to: ' . $user->user_email);
        }
    }

    return array('success' => $success_count, 'failed' => $fail_count);
}

add_action('admin_menu', 'wpkit_mass_email_menu');
function wpkit_mass_email_menu() {
    add_submenu_page('tools.php', 'WPKit Массовые письма', 'Массовые письма WPKit', 'manage_options', 'wpkit-mass-email', 'wpkit_mass_email_page');
}

function wpkit_mass_email_page() {
    if (!current_user_can('manage_options')) {
        return;
    }

    if (isset($_POST['wpkit_send_email'])) {
        $subject = sanitize_text_field($_POST['subject']);
        $message = sanitize_textarea_field($_POST['message']);
        $result = wpkit_send_mass_email($subject, $message);
        echo '<div class="updated">Отправлено: ' . $result['success'] . ' писем. Ошибок: ' . $result['failed'] . '</div>';
    }

    echo '<h1>Отправка массового письма подписчикам</h1>';
    echo '<form method="post">';
    echo '<p><label>Тема письма:<br><input type="text" name="subject" required style="width:100%;"></label></p>';
    echo '<p><label>Сообщение:<br><textarea name="message" rows="10" required style="width:100%;"></textarea></label></p>';
    echo '<p><input type="submit" name="wpkit_send_email" value="Отправить" class="button button-primary"></p>';
    echo '</form>';
}
?>

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

Оптимизация и советы при массовой отправке

При отправке большого количества писем возникают риски блокировок и задержек. Вот несколько рекомендаций:

  • Пакетная отправка: Разбейте список на части и отправляйте письма партиями с задержкой между запросами.
  • Используйте очереди: Реализуйте очередь отправки с помощью WP-Cron или внешних сервисов.
  • Проверяйте качество базы: Убедитесь, что email-адреса актуальны, чтобы снизить количество отказов.
  • Используйте правильные заголовки: Добавляйте заголовки From, Reply-To и Content-Type для лучшей совместимости.

Например, для пакетной отправки можно модифицировать функцию:

function wpkit_send_mass_email_batch($subject, $message, $batch_size = 50, $offset = 0) {
    $args = array(
        'role' => 'subscriber',
        'number' => $batch_size,
        'offset' => $offset
    );
    $users = get_users($args);
    $success_count = 0;
    $fail_count = 0;

    foreach ($users as $user) {
        $sent = wp_mail($user->user_email, $subject, $message);
        if ($sent) {
            $success_count++;
        } else {
            $fail_count++;
            error_log('Failed to send email to: ' . $user->user_email);
        }
    }

    return array('success' => $success_count, 'failed' => $fail_count);
}

Вы можете запускать эту функцию несколько раз с увеличением $offset, чтобы отправить весь список по частям.

Заключение

Создание массовых сообщений в WordPress с помощью PHP — это вполне выполнимая задача, которая позволит вам гибко управлять рассылками и уведомлениями. В статье мы рассмотрели как реализовать базовую отправку, улучшить её с помощью SMTP, а также создали простой плагин для удобства.

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

WooCommerce: автоматическое изменение стоимости товаров при оплате
30.04.2026
WooCommerce: как исключить товары с определёнными атрибутами из корзины
10.05.2026
Как создать AJAX фильтр товаров в WordPress
16.01.2026
Как удалить заблокированные плагины в WordPress без риска
26.01.2026
Оптимизация работы с кэшем в WordPress: практические советы и примеры
12.01.2026