Получатели электронной почты на основе идентификатора метода доставки для уведомления о новом заказе 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 вашей активной дочерней темы (или активной темы). проверено и работает.

Другие вопросы по тегам