How annoying is the fact you can only resend the “New Order Notification” from the single order admin page? What if you’re testing out and customizing email templates, and need to email yourself the “processing” or the “completed” notification, without having to place a new test order or switching order status twice to re-trigger the notification?
Well, today we will see how to add a “Resend whatever email” function under the “order actions” on the single order edit page. Of course, make sure you switch the billing email to yours, otherwise the customer will get these emails and not you. Enjoy!
PHP Snippet: Allow Administrator to Resend Any Order Email
In this case, I’ve targeted the “customer processing” email. In order to do that, I’ve created a custom Order action (please note the custom ‘resend_processing‘ order action ID, because that’s used later in the trigger ‘woocommerce_order_action_resend_processing‘, so if you change that you also need to change the ‘woocommerce_order_action_{action}” hook name).
Also, you’ll need to call the correct email class, in my case: WC_Email_Customer_Processing_Order
/**
* @snippet Resend Emails @ WooCommerce Order Admin
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @compatible WooCommerce 7
* @donate $9 https://tutoraspire.com
*/
add_filter( 'woocommerce_order_actions', 'tutoraspire_resend_processing_email_action', 9999, 2 );
function tutoraspire_resend_processing_email_action( $actions, $order ) {
if ( $order->has_status( wc_get_is_paid_statuses() ) ) {
$actions['resend_processing'] = 'Resend processing email';
}
return $actions;
}
add_action( 'woocommerce_order_action_resend_processing', 'tutoraspire_resend_processing_email_trigger' );
function tutoraspire_resend_processing_email_trigger( $order ) {
WC()->mailer()->emails['WC_Email_Customer_Processing_Order']->trigger( $order->get_id(), $order, true );
}