Уведомления электронной почты WooCommerce: разные адресаты электронной почты для разных городов

Я использую Woocommerce и фактически получаю уведомления о заказе только по одному электронному письму. Я хотел бы получать уведомления о заказах в двух разных электронных письмах в зависимости от местоположения клиента:

  • Для клиентов из зоны 1 (Германия) я хотел бы получать уведомления по электронной почте на
    Mail #1 (mail1@mail.com) ,
  • Для всех других зон, таких как зона 2 (Мексика), я хотел бы получать уведомления по электронной почте на
    Mail #2 (mail2@mail.com) .

Я ищу некоторые функции в сети, но я нашел только funtcions для отправки по двум адресам электронной почты, но без каких-либо условий If.

Мне нужно что-то вроде этого:

 if ($user->city == 'Germany') $email->send('mail1@mail.com') else $email->send('mail2@mail.com') 

Какой крюк я могу использовать, чтобы заставить это работать?

Благодарю.

Solutions Collecting From Web of "Уведомления электронной почты WooCommerce: разные адресаты электронной почты для разных городов"

Вы можете использовать настраиваемую функцию, подключенную в woocommerce_email_recipient_{$this->id} , с таргетингом на уведомление по электронной почте «Новый заказ» следующим образом:

 add_filter( 'woocommerce_email_recipient_new_order', 'diff_recipients_email_notifications', 10, 2 ); function diff_recipients_email_notifications( $recipient, $order ) { // Set HERE your email adresses $email_zone1 = 'name1@domain.com'; $email_zone_others = 'name2@domain.com'; // Set here your targeted country code for Zone 1 $country_zone1 = 'GE'; // Germany country code here // User Country (We get the billing country if shipping country is not available) $user_country = $order->shipping_country; if(empty($user_shipping_country)) $user_country = $order->billing_country; // Conditionaly send additional email based on billing customer city if ( $country_zone1 == $user_country ) $recipient = $email_zone1; else $recipient = $email_zone_others; return $recipient; } 

Для предстоящей версии WooCommerce версии 2.7 в классе WC_Abstract_Order будут доступны некоторые новые методы, касающиеся страны биллинга и страны доставки, но фактический код в этой функции будет оставаться совместимым. Эти новые методы, соответственно, get_billing_country() и get_shipping_country()
Использование объекта экземпляра $ order :

 $order->get_billing_country(); // instead of $order->billing_country; $order->get_shipping_country(); // instead of $order->shipping_country; 

Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.

Код проверен и работает.


Похожие ответы:

  • Как получить идентификатор заказа в woocommerce_email_headers
  • Отправлять уведомление по электронной почте о состоянии отправки