В интернет-магазинах на базе WooCommerce очень важно оперативно информировать клиентов о статусе их заказов. Один из ключевых моментов — автоматическая отправка подтверждения заказа на email покупателя сразу после оформления или изменения статуса заказа. В этой статье разберём, как настроить автоматическую отправку подтверждения заказа в WooCommerce, используя как стандартные возможности, так и дополнительные хуки и фильтры, а также рассмотрим примеры кода и полезные плагины.
Почему важно автоматизировать отправку подтверждений заказов в WooCommerce
Подтверждение заказа — это не просто формальность. Оно повышает доверие покупателей, снижает количество обращений в поддержку и помогает избежать недоразумений. WooCommerce по умолчанию отправляет email после оформления заказа, но бывают ситуации, когда требуется кастомизация:
- Отправлять подтверждение не сразу, а после изменения определённого статуса заказа.
- Добавлять к письму дополнительные данные или вложения.
- Менять шаблон письма под нужды конкретного магазина.
- Использовать сторонние SMTP-сервисы для более надёжной доставки.
Для решения этих задач можно использовать как встроенные средства WooCommerce, так и писать собственные функции.
Использование стандартных уведомлений WooCommerce
WooCommerce автоматически отправляет письмо с подтверждением, когда заказ переходит в статус «Обработка» (processing). Чтобы проверить и настроить эти уведомления, перейдите в админке в WooCommerce > Настройки > Email. Здесь можно активировать или деактивировать письма, редактировать шаблоны и адрес отправителя.
Однако иногда требуется более тонкая настройка — например, отправлять письмо сразу после оплаты, а не после смены статуса. Для этого есть хуки.
Пример кода: автоматическая отправка письма при смене статуса заказа
Добавим в functions.php темы или в кастомный плагин следующий код, который будет отправлять письмо с подтверждением сразу после смены статуса заказа на «обработка» (processing):
function wporders_send_order_confirmation_email($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
if (!$order) return;
// Получаем объект уведомления WooCommerce
$mailer = WC()->mailer();
$mails = $mailer->get_emails();
if (!empty($mails)) {
foreach ($mails as $mail) {
// Ищем уведомление Processing order
if ($mail->id === 'customer_processing_order') {
$mail->trigger($order_id);
}
}
}
}
add_action('woocommerce_order_status_processing', 'wporders_send_order_confirmation_email', 10, 1);Этот код вручную вызывает отправку email с уведомлением о том, что заказ находится в обработке. Аналогично можно использовать другие статусы, например, 'completed' для отправки после завершения заказа.
Как изменить шаблон письма для подтверждения заказа
Шаблоны email находятся в папке woocommerce/templates/emails/ плагина WooCommerce. Чтобы кастомизировать шаблон, скопируйте нужный файл (например, customer-processing-order.php) в папку вашей темы your-theme/woocommerce/emails/ и изменяйте его там. Это позволит сохранить изменения при обновлениях плагина.
Автоматизация с помощью плагинов
Если не хочется писать код, можно использовать специальные плагины, которые расширяют возможности email-уведомлений WooCommerce:
- Clearfy Pro — позволяет оптимизировать отправку писем, управлять шаблонами и отключать лишние уведомления.
- WPRemark — плагин для расширенного управления комментариями и отзывами, включая интеграцию с email-уведомлениями.
Эти плагины упрощают настройку и позволяют добавить дополнительные функции без программирования.
Отправка дополнительных данных в письме подтверждения
Иногда требуется добавить в письмо подтверждения кастомные поля заказа, например, номер доставки, промокод или особые пожелания покупателя. Для этого используйте фильтр woocommerce_email_order_meta_fields:
function wporders_add_custom_order_meta_to_email($fields, $sent_to_admin, $order) {
$fields['custom_delivery_number'] = array(
'label' => __('Номер доставки', 'woocommerce'),
'value' => $order->get_meta('custom_delivery_number'),
);
return $fields;
}
add_filter('woocommerce_email_order_meta_fields', 'wporders_add_custom_order_meta_to_email', 10, 3);В этом примере мы добавляем поле custom_delivery_number, которое хранится в мета данных заказа, в тело письма подтверждения. Для сохранения этого поля при оформлении заказа потребуется отдельный код, который можно добавить в форму оформления.
Как добавить поле в форму оформления заказа
Добавим поле «Номер доставки» в форму оформления заказа, чтобы пользователь мог указать его при заказе:
function wporders_add_custom_checkout_field($checkout) {
echo '<div id="wporders_custom_checkout_field">';
woocommerce_form_field('custom_delivery_number', array(
'type' => 'text',
'class' => array('form-row-wide'),
'label' => __('Номер доставки'),
'placeholder' => __('Введите номер доставки'),
'required' => false,
), $checkout->get_value('custom_delivery_number'));
echo '</div>';
}
add_action('woocommerce_after_order_notes', 'wporders_add_custom_checkout_field');
function wporders_save_custom_checkout_field($order_id) {
if (!empty($_POST['custom_delivery_number'])) {
update_post_meta($order_id, 'custom_delivery_number', sanitize_text_field($_POST['custom_delivery_number']));
}
}
add_action('woocommerce_checkout_update_order_meta', 'wporders_save_custom_checkout_field');Таким образом, данные пользователя сохраняются в заказе и могут быть отправлены в email с помощью предыдущего фильтра.
Отправка подтверждения через SMTP для надежной доставки
Иногда письма с подтверждением не доходят до клиентов из-за проблем с почтовым сервером хостинга. Чтобы избежать этого, рекомендуется использовать SMTP-серверы. Для WordPress существует много плагинов, например:
После установки и настройки SMTP вы значительно повысите вероятность доставки писем с подтверждениями заказов.
Резюме и рекомендации по оптимизации
Автоматическая отправка подтверждения заказа — обязательный элемент качественного интернет-магазина. Для её реализации в WooCommerce достаточно использовать встроенные функции и хуки, а при необходимости — кастомизировать шаблоны и добавлять свои поля. Плагины из каталога WPSHOP помогут быстро расширить функционал и улучшить доставляемость писем.
Обязательно тестируйте отправку писем в разных условиях, проверяйте шаблоны и корректность отображения данных, чтобы ваши клиенты всегда получали своевременную и полезную информацию о своих заказах.