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

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

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

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

Что мне нужно, это что-то вроде этого:

if ($user->city == 'Germany') $email->send('[email protected]')
else $email->send('[email protected]')

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

Благодарю.

3

Решение

Вы можете использовать пользовательскую функцию, подключенную 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 ) {
if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;

// Set HERE your email adresses
$email_zone1 = '[email protected]';
$email_zone_others = '[email protected]';

// 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;
}

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

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

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

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


Связанные ответы:

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]