WooCommerce, как отправлять электронные письма с завершенными заказами на пользовательские поля адресов электронной почты - PullRequest
0 голосов
/ 26 июня 2019

В WooCommerce я создал настраиваемое поле для адреса электронной почты.Теперь мне нужно, чтобы WooCommerce отправлял электронные письма с завершенными заказами только в адрес этого настраиваемого поля, если в этом поле есть значение.

Я выяснил, как отправить электронное письмо с завершенным заказом на пользовательский адрес электронной почты как BCC, но теперь я пытаюсь, чтобы сообщения электронной почты отправлялись на адрес электронной почты настраиваемого поля без стандартных адресов электронной почты.

Электронное письмо с настраиваемым полем в виде BCC (рабочий код):

// * Отправка счета на счета к оплате по выполненным заказам * //

add_filter( 'woocommerce_email_headers', 
'wcmos_email_cc_alternative', 10, 3);

function wcmos_email_cc_alternative( $recipient, $email_id, $order ) 
{
if ($email_id == 'customer_completed_order') {
    $alternative_email = $order->get_meta( 'purchase_order_email', 
true );
    if ( $alternative_email ) {

        $recipient = '$alternative_email';
    }
    }
return $recipient;
}

Электронное письмо с настраиваемым полем в качестве основного получателя (код с ошибкой)):

 add_filter( 'woocommerce_email_recipient_customer_completed_order', 
'wcmos_email_cc_alternative', 10, 3);

function wcmos_email_cc_alternative( $recipient, $email_id, $item_id 
) {
if ($email_id == 'customer_completed_order') {
    $alternative_email = $order->get_meta( 'purchase_order_email', 
true );
    $po_email = wc_get_order_item_meta( $item_id, 
'purchase_order_email - '.$enroll_num, true );
    if ( $alternative_email ) {

        $recipient = ', $po_email';

    }
}
return $recipient;
}

1 Ответ

3 голосов
/ 26 июня 2019

Фильтр woocommerce_email_recipient_customer_completed_order принимает два параметра: $ получателей и $ order

Похоже, это то, что вы хотите:


add_filter( 'woocommerce_email_recipient_customer_completed_order', 'wcmos_email_cc_alternative', 10, 2);

function wcmos_email_cc_alternative( $recipient, $order) {
    $alternative_email = $order->get_meta('purchase_order_email',true);

    if ($alternative_email != '') {
        $recipient = $alternative_email;
    }

    return $recipient;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...