Отправить уведомление по электронной почте, когда статус заказа изменяется с отложенного на отмененный
В предыдущих версиях 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.
Вам больше не нужен этот код.