Disable email notification for WooCommerce manual/edit orders Disable email notification for WooCommerce manual/edit orders wordpress wordpress

Disable email notification for WooCommerce manual/edit orders


If you only want to remove them from the admin and continue to have new order emails sent when customers purchase things on the frontend, wrap the action removals in some logic to check for that case. I have included all of the relevant emails from this WooCom example (https://docs.woocommerce.com/document/unhookremove-woocommerce-emails/), removing the ones that either are not generated by creating/editing orders in the admin or already have an option to send or not send (notes).

add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );function unhook_those_pesky_emails( $email_class ) {    if ( is_admin() && ! wp_doing_ajax() ) {        // New order emails        remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );        remove_action( 'woocommerce_order_status_pending_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );        remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );        remove_action( 'woocommerce_order_status_failed_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );        remove_action( 'woocommerce_order_status_failed_to_completed_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );        remove_action( 'woocommerce_order_status_failed_to_on-hold_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) );        // Processing order emails        remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );        remove_action( 'woocommerce_order_status_pending_to_on-hold_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) );        // Completed order emails        remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) );    }}


Refer to the function. In functions.php or a custom plugin:

add_action( 'woocommerce_email', 'unhook_those_pesky_emails' );function unhook_those_pesky_emails( $email_class ) {remove_action( 'woocommerce_order_status_completed_notification', array( $email_class->emails['WC_Email_Customer_Completed_Order'], 'trigger' ) ); // cancels automatic email of order complete status update.remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_New_Order'], 'trigger' ) ); // cancels automatic email of new order placed (when defined to procession status)remove_action( 'woocommerce_order_status_pending_to_processing_notification', array( $email_class->emails['WC_Email_Customer_Processing_Order'], 'trigger' ) ); // cancels automatic email of status update to processing.}