Я использую Woocommerce и фактически получаю уведомления о заказе только по одному электронному письму. Я хотел бы получать уведомления о заказах в двух разных электронных письмах в зависимости от местоположения клиента:
Mail #1 (mail1@mail.com)
, Mail #2 (mail2@mail.com)
. Я ищу некоторые функции в сети, но я нашел только funtcions для отправки по двум адресам электронной почты, но без каких-либо условий If.
Мне нужно что-то вроде этого:
if ($user->city == 'Germany') $email->send('mail1@mail.com') else $email->send('mail2@mail.com')
Какой крюк я могу использовать, чтобы заставить это работать?
Благодарю.
Вы можете использовать настраиваемую функцию, подключенную в 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 вашей активной дочерней темы (или темы), а также в любом файле плагина.
Код проверен и работает.
Похожие ответы: