В предыдущих версиях Woocommerce уведомление по электронной почте было отправлено автоматически, когда заказ был изменен с ожидающего статуса на отмененный статус (в моем случае это происходит после отведенного времени, установленного в разделе инвентаризации администратора).
В WooCommerce 3.0.8 они удалили эту автоматизацию и помечены как исправление: https://github.com/woocommerce/woocommerce/blob/master/CHANGELOG.txt
И запрос на перенос находится здесь: https://github.com/woocommerce/woocommerce/pull/15170/files
Я хочу восстановить эту функциональность, но, очевидно, копирование / вставка этой строки обратно в основные файлы Woocommerce не является хорошей идеей, так как она будет перезаписана при обновлении платформы.
Я знаю, что лучшим способом было бы создать функцию и подключиться к отмененному действию заказа через функции.php, но после того, как я посмотрю, я немного потерялся о том, как это сделать. Вот строка, которая была заменена:
add_action( 'woocommerce_order_status_pending_to_cancelled_notification', array( $this, 'trigger' ), 10, 2 );
Как восстановить эту старую автоматическую функциональность?
Хорошее новое: используя woocommerce_order_status_pending_to_cancelled
action hook с настраиваемой функцией в нем, решите свою проблему окончательно:
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.
Вам больше не нужен этот код.