How to Check if a WooCommerce Email is Enabled or Disabled?

In this tutorial I will show you two methods that allow you to check anywhere in the code if a certain WooCommerce email is enabled or not. The code will work for both default and custom emails.

/2 comments
WooCommerce enabled Customer Note email
Of course you can find it out in WooCommerce > Settings > Emails, but now I want to show you how to do it in the code.

Method 1. get_option() – for custom emails

Please keep in mind, that this method works for custom emails only. So, if you try to use it for "Customer note" email for example, nothing happens ?‍♂️

Anyway, the familiar way is to use get_option( $key ). But what should be in the $key parameter? Please don’t open your code inspector in browser – HTML name attribute is not what you need.

$email_options = get_option('woocommerce_{EMAIL ID}_settings');
if( $email_options['enabled'] == 'yes' ) {
	// do something
}

Where to get email IDs? Easy – if you open email settings page and look at the URL, you will see admin.php?page=wc-settings&tab=email&section=EMAIL ID. Usually emails IDs are the same as email class names.

Actually $email_options contains the following array:

(
	[enabled] => yes
	[subject] => 
	[heading] => 
	[email_type] => html
	[custom_stuff] => custom_stuff
)

Method 2. is_enabled()

This method works great for both default and custom WooCommerce emails.

$email = WC()->mailer()->emails['EMAIL CLASS NAME HERE'];
 
if( $email->is_enabled() ) {
	// do something
}

By the way you can initialize WC()->mailer() just once and do many cool stuff without creating new object, example $mailer = WC()->mailer().

Example – check if .. email is enabled and if yes, send it, and if another email is enabled, update some option.

$mailer = WC()->mailer();
 
if( $mailer->emails['WC_Email_New_Order']->is_enabled() ) {
	$mailer->emails['WC_Email_New_Order']->trigger( $order_id );
}
 
if( $mailer->emails['WC_Email_Customer_New_Account']->is_enabled() ) {
	update_option( 'jhjkhkhk', 'yes' );
}

And one more example – you can do the same using an object:

$email = new WC_Email_New_Order();
if( $email->is_enabled() ) {
	// do stuff
}

Class Names of the Default WooCommerce Emails

I think after all of that I just have to give the list of class names of WooCommerce default emails! And here they are:

More about WooCommerce Emails ?

Misha Rudrastyh

Misha Rudrastyh

I love WordPress, WooCommerce and Gutenberg so much. 10 yrs of experience.

Need some custom developer help? Let me know

Follow Misha

Need some help with WooCommerce?

If you need some professional developer help, I will be happy to assist you.

Contact me Who I am?

Comments — 2

Leave a comment

php js HTML CSS Code