Диагностика проблемы: почему автоматические письма с отзывами не работают или неэффективны
Многие владельцы 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) | Мощные инструменты, аналитика | Сложность интеграции, стоимость | Использовать при комплексных маркетинговых задачах |