Skip to content
Advertisement

Send an email notification when order status change from pending to cancelled

In previous versions of Woocommerce, an email notification was sent automatically when an order was changed from pending status to cancelled status (In my case, this happens after an allotted time set in the inventory section of the admin).

In WooCommerce 3.0.8 they have removed this automation and labelled as a fix: https://github.com/woocommerce/woocommerce/blob/master/CHANGELOG.txt

And the pull request is here: https://github.com/woocommerce/woocommerce/pull/15170/files

I’m looking to restore this functionality, but obviously copy/pasting this line back in to the Woocommerce core files isn’t a good idea as it will get overwritten when the platform updates.

I know the best method would to be to create a function and hook into the cancelled order action via functions.php but after having a look I’m a bit lost about how to do this. Here is the line which was replaced:

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

How can I restore this old automated functionality?

Advertisement

Answer

The good new: Using woocommerce_order_status_pending_to_cancelled action hook with a custom function hook in it, solve your problem definitively:

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 );
}

Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

Tested and perfectly works in WooCommerce 3+ (still work on version 4.8+)

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement