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.

Published on /Updated on /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 📬

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

Comments are closed