Я пробовал несколько способов добавить дополнительных получателей в электронные письма 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 . ', [email protected]';
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 <[email protected]>' . "\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 <[email protected]>' . "\r\n";
return $headers;
}
Если я добавлю письмо $object
в, так что он запускается только для обработки заказов клиентов, он только копирует на электронные письма администратора (только cc, не получатель), а не клиенты (ни cc, ни получатель).
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 <[email protected]>' . "\r\n";
}
return $headers;
}
Буду признателен за любые советы.
Следующий код работает в последней версии 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 <[email protected]>');
// 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.
Виновником была подписка 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 <[email protected]>' . "\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 . ', [email protected]';
return $recipient;
}