2017-01-30 1 views
3

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

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

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

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

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

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

Спасибо.

+0

И что случилось с кодом, предоставленные вами? –

+0

Это просто пример, что я имел в виду – Mario

+1

Пример, который вы предоставили, выглядит отлично. Так о чем вы просите о помощи? Можете ли вы предоставить больше кода, чтобы устранить проблему? – akousmata

ответ

3

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

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 = '[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; 
} 

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

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

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

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


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

Смежные вопросы