wpcodes.ru wordpress WP Codеs

WooCommerce: как автоматически отправлять клиентам письма с просьбой оставить отзыв и прикреплять к письму изображения товара

Диагностика проблемы: почему автоматические письма с отзывами не работают или неэффективны

Многие владельцы WooCommerce-магазинов сталкиваются с тем, что клиенты не оставляют отзывы на товары, несмотря на важность обратной связи для продаж и SEO. При этом стандартные решения WooCommerce не дают удобного способа автоматической отправки писем с напоминанием и не позволяют прикреплять к письмам изображения товаров для повышения вовлечённости.

Проверить, активна ли функция отправки напоминаний, можно через настройки WooCommerce и логи почтового сервера, а также по отсутствию писем в почтовом ящике покупателей после завершения заказа.

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

1. Добавление хука на смену статуса заказа

Для начала добавим в functions.php вашей темы код, который будет запускать отправку письма через 3 дня после смены статуса заказа на "завершён" (completed):

add_action('woocommerce_order_status_completed', 'schedule_review_request_email');
function schedule_review_request_email($order_id) {
    if (!$order_id) return;
    wp_schedule_single_event(time() + 3 * DAY_IN_SECONDS, 'send_review_request_email', array($order_id));
}

2. Создание функции отправки письма с изображениями товаров

Теперь реализуем функцию, которая формирует письмо с изображениями всех купленных товаров и отправляет его клиенту:

add_action('send_review_request_email', 'send_review_request_email_callback');
function send_review_request_email_callback($order_id) {
    if (!$order_id) return;
    $order = wc_get_order($order_id);
    if (!$order) return;

    $to = $order->get_billing_email();
    $subject = 'Пожалуйста, оставьте отзыв о вашем заказе';

    $items = $order->get_items();
    $image_html = '';

    foreach ($items as $item) {
        $product = $item->get_product();
        if ($product) {
            $image_url = wp_get_attachment_url($product->get_image_id());
            $name = $product->get_name();
            if ($image_url) {
                $image_html .= '<div style="margin-bottom:15px;">';
                $image_html .= '<img src="' . esc_url($image_url) . '" alt="' . esc_attr($name) . '" style="max-width:150px;display:block;"/>';
                $image_html .= '<p>' . esc_html($name) . '</p>';
                $image_html .= '</div>';
            }
        }
    }

    $message = '<p>Здравствуйте! Спасибо за ваш заказ. Мы будем признательны, если вы оставите отзыв о купленных товарах.</p>';
    $message .= $image_html;
    $message .= '<p>Оставить отзыв можно по ссылке: <a href="' . esc_url($order->get_checkout_order_received_url()) . '">Перейти к отзыву</a>.</p>';

    add_filter('wp_mail_content_type', function() { return 'text/html'; });
    wp_mail($to, $subject, $message);
    remove_filter('wp_mail_content_type', function() { return 'text/html'; });
}

Как проверить, что решение работает

  • После смены статуса заказа на "завершён" подождите 3 дня (или уменьшите таймер для теста).
  • Проверьте папку входящих писем покупателя — должно прийти письмо с изображениями купленных товаров и ссылкой на отзыв.
  • Можно добавить временный лог в функцию отправки (например, запись в debug.log), чтобы убедиться, что событие срабатывает.
  • Проверьте корректность отображения изображений в письме — они должны быть видимы и корректно подписаны.

Частые ошибки и как их исправить

  • Письма не отправляются: Проверьте настройки почты на сервере, используйте SMTP-плагин (например, WP Mail SMTP) для надёжной отправки.
  • Изображения не отображаются в письмах: Убедитесь, что get_image_id() возвращает ID изображения, а URL доступен публично.
  • Письмо приходит в спам: Проверьте SPF, DKIM, DMARC настройки домена, используйте шаблоны с минимальным HTML и без чрезмерных ссылок.
  • Отправка срабатывает многократно: Используйте wp_schedule_single_event вместо повторяющегося, чтобы исключить дублирование.

Практические советы по безопасности и производительности

  • Используйте wp_schedule_single_event с уникальными параметрами, чтобы не создавать дублированные задачи.
  • Ограничьте количество отправляемых писем за короткое время при большом потоке заказов, чтобы не попасть под лимиты почтовых сервисов.
  • Используйте SMTP-серверы с авторизацией и шифрованием для повышения надёжности отправки.
  • Храните минимально необходимую информацию в письмах, избегайте открытых ссылок на личные данные.

Сравнение вариантов реализации автоматических писем с отзывами

МетодПлюсыМинусыКомпромисс
Плагин (например, WooCommerce Follow-Ups) Простой запуск, готовые шаблоны, поддержка Стоимость, нагрузка, ограниченная кастомизация Использовать для крупных магазинов с бюджетом
Кастомный код (как в статье) Полный контроль, бесплатность, простота Требует базовых навыков, поддержка на разработчике Подходит для небольших и средних проектов
Сервисы email-маркетинга (MailChimp, SendGrid) Мощные инструменты, аналитика Сложность интеграции, стоимость Использовать при комплексных маркетинговых задачах
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше