Так что это скорее моё решение, но я хотел открыть его, чтобы посмотреть, сможет ли сообщество найти лучшую альтернативу или потенциально найти применение для этого решения.
Наш клиент попросил нас внести следующие изменения в квитанции заказа по электронной почте, полученные при создании заказа: Квитанции должны быть отправлены владельцу счета и см. Платежное письмо, если оно отличается
Как мы знаем, Woocommerce по умолчанию отправляет квитанцию заказа (Обработка клиентов), основываясь только на наборе billing_email при оформлении заказа, поэтому я начал искать способ добавить на адрес электронной почты владельца учетной записи это также.
Я немного покопался и нашел несколько ответов на Stackoverflow о том, как это сделать, и предлагаемое решение использовало встроенную функцию woocommerce_email_recipient_customer_processing_order . Этот подход только добавил бы к электронному письму в заголовке «to» - без идеала. Он также не учитывает возможные повторные отправки на один и тот же адрес электронной почты, что, по крайней мере, в случае нашего сервера здесь, привело к тому, что письмо не было доставлено. Нет Буэно.
Приведенная ниже функция представляет собой обходной путь, в котором мы вызываем функцию WP Core wp_get_current_user () , чтобы получить электронное письмо, с которым связан пользователь, и затем проверить, совпадает ли оно с биллингом. Эл. адрес.
add_filter( 'woocommerce_email_headers', 'add_email_recipient', 10, 3);
function add_email_recipient($header, $email_id, $order) {
// Only for "Customer Processing Emails" email notifications
if( ! ( 'customer_processing_order' == $email_id ) ) return;
$curr_user = wp_get_current_user();
$account_holder_email = $curr_user->user_email;
$billing_email = $order->get_billing_email();
$header ='';
if ( $account_holder_email != $billing_email ) {
$header .= 'Cc: '.$account_holder_email;
}
return $header;
}
Логика намеревается действовать следующим образом:
- Настройка заголовков электронной почты woocommerce
- Если в письме указано «customer_processing_order», продолжайте
- Получить текущую электронную почту пользователя
- Получите адрес электронной почты для выставления счета в заказе
- назначить поле CC текущего пользователя электронной почты
- сделано
Насколько я могу судить, не было более простого способа справиться с этим, поэтому я публикую это здесь в надежде увидеть, есть ли у кого-то еще более элегантное решение. Приведенный выше код работает путем размещения в дочерней теме functions.php .