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

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

В WooCommerce 3.0.8 они удалили эту автоматизацию и пометили ее как исправление: https://github.com/woocommerce/woocommerce/blob/master/CHANGELOG.txt

И запрос на извлечение находится здесь: https://github.com/woocommerce/woocommerce/pull/15170/files

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

Я знаю, что лучшим способом было бы создать функцию и подключиться к действию отмененного ордера через functions.php, но, посмотрев, я немного растерялся, как это сделать. Вот строка, которая была заменена:

add_action( 'woocommerce_order_status_pending_to_cancelled_notification', array( $this, 'trigger' ), 10, 2 );

Как я могу восстановить этот старый автоматизированный функционал?

2 ответа

Решение

Хорошее новое: использование woocommerce_order_status_pending_to_cancelled Действие ловушка с пользовательской функцией ловушки в нем, решит вашу проблему окончательно:

add_action('woocommerce_order_status_pending_to_cancelled', 'cancelled_send_an_email_notification', 10, 2 );
function cancelled_send_an_email_notification( $order_id, $order ){
    // Getting all WC_emails objects
    $email_notifications = WC()->mailer()->get_emails();

    // Sending the email
    $email_notifications['WC_Email_Cancelled_Order']->trigger( $order_id );
}

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

Протестировано и отлично работает в WooCommerce 3+ (и 3.1+)

Я не могу комментировать из-за меньшей репутации, поэтому я добавляю эту информацию сюда для дальнейшего использования.

Начиная с версии 3.0.9 эта проблема была исправлена Woocommerce, когда уведомление отправлялось администратору. Ссылка на сайт

* Fix - Updated `woocommerce_email_actions` to send email when order status changes from processing to cancelled.

Вам больше не нужен этот код.

Другие вопросы по тегам