Как изменить тему письма клиенту woocomerce?
Дело касается писем Заказ в обработке
Что бы я не делал, я всегда получаю это: "Ваш заказ на {site_title} оформлен!"
Я пробовал менять заголовок в админке, не работает!
Я пробовал код:
add_filter('woocommerce_email_subject_customer_processing_order', 'change_client_email_subject', 1, 2); function change_client_email_subject( $subject, $order ) { global $woocommerce; $subject = 'Test, спасибо за ваш заказ!'; return $subject; } |
add_filter('woocommerce_email_subject_customer_processing_order', 'change_client_email_subject', 1, 2); function change_client_email_subject( $subject, $order ) { global $woocommerce; $subject = 'Test, спасибо за ваш заказ!'; return $subject; }
Я пробовал код с офф сайта:
add_filter('woocommerce_email_subject_customer_processing_order', 'change_client_email_subject', 1, 2); function change_client_email_subject( $subject, $order ) { global $woocommerce; $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $subject = sprintf( '[%s] New Customer Order (# %s) from Name %s %s', $blogname, $order->id, $order->billing_first_name, $order->billing_last_name ); return $subject; } |
add_filter('woocommerce_email_subject_customer_processing_order', 'change_client_email_subject', 1, 2); function change_client_email_subject( $subject, $order ) { global $woocommerce; $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $subject = sprintf( '[%s] New Customer Order (# %s) from Name %s %s', $blogname, $order->id, $order->billing_first_name, $order->billing_last_name ); return $subject; }
Но в итоге получаю одно и тоже Ваш заказ на {site_title} оформлен!
Что я делаю не так ?
Дополнительно:
Измени в переводе.
- Мне это все равно не помогло.. Менял в woocommerce-ru_RU.po
- Даниил Конев, не правильно делаешь. Нужно скомпилировать mo. Используй Loco Translate и пользовательский файл перевода чтобы не переписывался при обновлении
- Refguser, теперь все получилось... Но для меня все же странно, почему хук не сработал и в админке то что писал бесполезно все.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Фильтр
woocommerce_email_subject_customer_processing_orderправильный для письма клиенту “Заказ в обработке”, но он не сработает, если Вы меняете не тот email, письмо переопределено плагином, тема/плагин ставит свой фильтр позже или заказ уходит в другой статус.Начните с приоритета повыше и корректного объекта заказа:
add_filter('woocommerce_email_subject_customer_processing_order', function ($subject, $order, $email) { if (!$order instanceof WC_Order) { return $subject; } return 'Спасибо за заказ №' . $order->get_order_number(); }, 99, 3);
Обратите внимание на
accepted_args: у фильтра может быть 3 аргумента, поэтому указывайте99, 3. Старый код с$order->idдля новых WooCommerce некорректен, используйте$order->get_id()илиget_order_number().Проверьте, какой email реально отправляется. Если заказ сразу становится completed, нужен другой фильтр:
woocommerce_email_subject_customer_completed_order
Если письмо меняет плагин кастомизации email-шаблонов, он может перезаписывать subject после Вашего фильтра. Тогда либо отключите настройку темы письма в плагине, либо ставьте фильтр с ещё более поздним приоритетом.
Также не путайте “заголовок письма” внутри шаблона и “тему письма” в почтовом клиенте. Для заголовка внутри письма есть отдельный фильтр:
woocommerce_email_heading_customer_processing_order
Если в админке WooCommerce в настройках письма стоит шаблонная строка с
{site_title}, её можно поменять там. Но если не меняется, значит код переопределяется сторонней логикой. Проверяйте активные email customizer-плагины, тему и сниппеты.