Woocommerce: добавление второго адреса электронной почты не работает, если получатель не является администратором - PullRequest
0 голосов
/ 27 июня 2018

Я пробовал несколько способов добавить дополнительных получателей в электронные письма Woocommerce, но, похоже, он работает только с тестовыми заказами, где основным получателем является администратор.

Это фрагменты, которые я пробовал. Если заказчиком заказа является администратор, на электронную почту отправляются оба адреса. Если заказ содержит адрес электронной почты клиента, он отправляется только на этот адрес электронной почты, а не в CC.

Вот фрагменты кода, которые я пробовал:

add_filter( 'woocommerce_email_recipient_customer_processing_order', 'my_email_recipient_filter_function', 10, 2);

function my_email_recipient_filter_function( $recipient ) {
$recipient = $recipient   . ', secondemail@example.com';
return $recipient;
}

.

add_filter( 'woocommerce_email_headers', 'woocommerce_email_cc_copy', 10, 2);

function woocommerce_email_cc_copy( $headers, $email ) {
if ( $email == 'customer_processing_order') {
    $headers .= 'CC: Your name <secondemail@example.com>' . "\r\n"; //just repeat this line again to insert another email address in BCC
}

return $headers;
}

.

Этот работает, но срабатывает при каждом уведомлении по электронной почте:

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function( $headers, $object ) {
        $headers .= 'CC: My name <secondemail@example.com>' . "\r\n";

    return $headers;
}

Если я добавлю электронное письмо $object, чтобы оно запускалось только для заказов клиентов, оно только копировало их на электронные письма администратора (только для копий, не получатель), а не для клиентов (ни копий, ни получателей).

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function( $headers, $object ) {
 if ( $object == 'customer_processing_order') {
        $headers .= 'CC: My name <secondemail@example.com>' . "\r\n";
 }

    return $headers;
}

Буду признателен за любой совет.

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Виновной была подписка Woocommerce, переопределившая $email_id для customer_processing_order с customer_processing_renewal_order. После обновления этого текста заголовки и получатели были изменены.

Хук заголовков, для Woocommerce Подписки:

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function( $headers, $object ) {

// If Woocommerce Subscriptions is active, this needs the renewal email id
 if ( $object == 'customer_processing_renewal_order') {
        $headers .= 'CC: My name <secondemail@example.com>' . "\r\n";
 }

    return $headers;
}

И получатель хук:

// If Woocommerce Subscriptions is active, hook needs the renewal email id
add_filter( 'woocommerce_email_recipient_customer_processing_renewal_order', 'my_email_recipient_filter_function', 10, 2);

function my_email_recipient_filter_function( $recipient ) {
$recipient = $recipient   . ', secondemail@example.com';
return $recipient;
}
0 голосов
/ 27 июня 2018

Следующий код работает в последней версии Woocommerce (v3.4.3) добавление настраиваемого электронного письма в "CC" для обработки клиентом уведомления по электронной почте:

add_filter( 'woocommerce_email_headers', 'custom_cc_email_headers', 20, 3 );
function custom_cc_email_headers( $header, $email_id, $order ) {

    // Only for "Customer Completed Order" email notification
    if( 'customer_processing_order' !== $email_id )
        return $header;

    // Prepare the the data
    $formatted_email = utf8_decode('Mister bean <misterbean@example.com>');

    // Add Cc to headers
    $header .= 'Cc: '.$formatted_email .'\r\n';

    return $header;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

Вы даже можете добавить его в Bcc вместо Cc, как в этой ветке ответов:
Добавление пользовательских писем в BCC для определенных почтовых уведомлений Woocommerce


Хук woocommerce_email_recipient_customer_processing_order не работает в Woocommerce 3.4.x.

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