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