Отправка электронной почты клиенту по отмененному заказу в Woocommerce
Я пытаюсь отправить электронное письмо клиенту, когда заказ отменяется. По умолчанию woocommerce отправляет это электронное письмо только администратору сайта. Этот код решил проблему для связанных сообщений в Интернете:
function wc_cancelled_order_add_customer_email( $recipient, $order ){
return $recipient . ',' . $order->billing_email;
}
add_filter( 'woocommerce_email_recipient_cancelled_order', 'wc_cancelled_order_add_customer_email', 10, 2 );
add_filter( 'woocommerce_email_recipient_failed_order', 'wc_cancelled_order_add_customer_email', 10, 2 );
Однако, похоже, что woocommerce полностью удалила эти крючки фильтра. Есть ли какой-нибудь способ сделать это?
Заранее спасибо!
1 answers
В этой пользовательской функции, подключенной woocommerce_order_status_changed
крючок для действий, я нацеливаюсь на "отмененные" и "неудачные" заказы, отправляя клиенту соответствующее уведомление по электронной почте (так как администратор получит его на своей стороне с помощью автоматических уведомлений WooCommerce):
add_action('woocommerce_order_status_changed', 'custom_send_email_notifications', 10, 4 );
function custom_send_email_notifications( $order_id, $old_status, $new_status, $order ){
if ( $new_status == 'cancelled' || $new_status == 'failed' ){
$wc_emails = WC()->mailer()->get_emails(); // Get all WC_emails objects instances
$customer_email = $order->get_billing_email(); // The customer email
}
if ( $new_status == 'cancelled' ) {
// change the recipient of this instance
$wc_emails['WC_Email_Cancelled_Order']->recipient = $customer_email;
// Sending the email from this instance
$wc_emails['WC_Email_Cancelled_Order']->trigger( $order_id );
}
elseif ( $new_status == 'failed' ) {
// change the recipient of this instance
$wc_emails['WC_Email_failed_Order']->recipient = $customer_email;
// Sending the email from this instance
$wc_emails['WC_Email_failed_Order']->trigger( $order_id );
}
}
Код входит в function.php файл вашей активной дочерней темы (или темы) или также в любом файле плагина.
Это должно работать в WooCommerce 3+
Если вам нужно, вместо того, чтобы менять электронная почта, вы можете добавить ее существующим получателям:
// Add a recipient in this instance $wc_emails['WC_Email_failed_Order']->recipient .= ',' . $customer_email;
Связанный ответ: Отправьте уведомление по электронной почте, когда статус заказа изменится с ожидающего на отмененный