Получатели электронной почты на основе идентификатора метода доставки для уведомления о новом заказе Woocommerce
В Woocommerce я хотел бы, чтобы новое электронное письмо с заказом отправлялось конкретным лицам на основе выбранного идентификатора способа доставки.
В настоящее время я могу добавить каждый адрес электронной почты только к новому электронному письму заказа, но в конечном итоге хочу, чтобы электронное письмо было отправлено на один конкретный адрес электронной почты в зависимости от идентификатора способа доставки, выбранного клиентом.
Вот мой код из этого ответа, который работает для почтового индекса:
add_filter( 'new_order' , 'so_26429482_add_recipient', 20, 2 );
function so_26429482_add_recipient( $email, $order ) {
$additional_email = "somebody@somewhere.net";
if( $order->shipping_postcode == "90210" ){
$email = explode( ',', $email );
array_push( $email, $additional_email );
}
return $email;
}
Вместо этого я должен указать адрес доставки.
Мои два способа доставки идентификаторы flat_rate:8
а также flat_rate:9
,
Кто-нибудь знает как это сделать?
1 ответ
Обновление 2 - Ваш код устарел как new_order
крючок больше не выходит.
Невозможно удалить установленный по умолчанию адрес электронной почты в уведомлении о новом заказе. Но мы можем добавить получателя электронной почты к уведомлению о новом заказе по условию на основе идентификатора способа доставки заказа:
add_filter( 'woocommerce_email_recipient_new_order', 'new_order_additional_recipients', 20, 2 );
function new_order_additional_recipients( $recipient, $order ) {
if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;
// Set Below your email adresses
$email1 = 'name1@domain.com';
$email2 = 'name2@domain.com';
// Get the shipping method Id
$shipping_items = $order->get_items('shipping');
$shipping_item = reset($shipping_items);
$shipping_method_id = $shipping_item->get_method_id() . ':';
$shipping_method_id .= $shipping_item->get_instance_id();
// Adding recipients conditionally
if ( 'flat_rate:8' == $shipping_method_id )
$recipient .= ',' . $email1;
elseif ( 'flat_rate:9' == $shipping_method_id )
$recipient .= ',' . $email2;
return $recipient;
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). проверено и работает.