Как изменить тему письма клиенту woocomerce?

Ссылка скопирована
1 ответ

Дело касается писем Заказ в обработке

Что бы я не делал, я всегда получаю это: "Ваш заказ на {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, теперь все получилось... Но для меня все же странно, почему хук не сработал и в админке то что писал бесполезно все.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Web-разработка Ответ

Фильтр 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);

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

woocommerce_email_subject_customer_completed_order

Если письмо меняет плагин кастомизации email-шаблонов, он может перезаписывать subject после Вашего фильтра. Тогда либо отключите настройку темы письма в плагине, либо ставьте фильтр с ещё более поздним приоритетом.

Также не путайте “заголовок письма” внутри шаблона и “тему письма” в почтовом клиенте. Для заголовка внутри письма есть отдельный фильтр:

woocommerce_email_heading_customer_processing_order

woocommerce_email_heading_customer_processing_order

Если в админке WooCommerce в настройках письма стоит шаблонная строка с {site_title}, её можно поменять там. Но если не меняется, значит код переопределяется сторонней логикой. Проверяйте активные email customizer-плагины, тему и сниппеты.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно