Skip to content

Instantly share code, notes, and snippets.

@isaumya
Last active April 10, 2024 12:45
Show Gist options
  • Star 24 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save isaumya/89f48dcd84cb58af1e668bb76ba2c029 to your computer and use it in GitHub Desktop.
Save isaumya/89f48dcd84cb58af1e668bb76ba2c029 to your computer and use it in GitHub Desktop.
Easily Remove WooCommerce Bloated Features like Marketing Hub from WordPress Admin Menu

Remove WooCommerce Bloated Features from WP Admin Menu

Recently WooCommerce has added a lot of improvements to the plugin which we really appriciate but at the same time a lot of bloated features has alos been added to the plugin like Marketing Hub, a completely useless menu taking extra space among the other important menu items. Now if you find Marketing Hub to be useful, you can keep it.

But just in case you are looking for a way to remove these features that you no longer need from your WordPress Admin menus, take a look at the following code snippets. Please note: though I will show you how you can remove the Marketing Hub from your WP Admin menu list completely and make sure WooCommerce doesn't execute codes for that feature you don't need, you can do the same for other WooCommerce features as well like Analytics.

How to remove Marketing Hub for WooCommerce <= v4.2

If you are using WooCommerce <= v4.2, you can simple add this one line of code in your theme's functions.php file or make a simple feature plugin and use that to disable the Marketing Hub feature.

add_filter( 'woocommerce_marketing_menu_items', '__return_empty_array' );

How to remove unnecessary features from WooCommerce >= v4.3

In WooCommerce v4.3, Marketing Hub has become a part of WooCommerce admin core features. So, the filter woocommerce_marketing_menu_items no longer exists in WooCommerce v4.3 and hence the above code won't work. But at the same time as Marketing Hub has become a part of WooCommerce admin core features, you can disable it easily along with other WooCommerce features that you might not need for your website.

Here is the code snippet to remove Marketing Hub from WooCommerce in v4.3+.

// Remove WooCommerce Marketing Hub Menu from the sidebar - for WooCommerce v4.3+
add_filter( 'woocommerce_admin_features', function( $features ) {
	/**
	 * Filter the list of features and get rid of the features not needed.
	 * 
	 * array_values() are being used to ensure that the filtered array returned by array_filter()
	 * does not preserve the keys of initial $features array. As key preservation is a default feature 
	 * of array_filter().
	 */
	return array_values(
		array_filter( $features, function($feature) {
			return $feature !== 'marketing';
		} ) 
	);
} );

Removing more than just Marketing Hub from WooCommerce v4.3+

Also just in case you need if you do var_dump($features) to see the list of WooCommerce Admin features, you will get an array like this:

array(10) { 
  [0]=> string(15) "activity-panels" 
  [1]=> string(9) "analytics" 
  [2]=> string(19) "analytics-dashboard" 
  [3]=> string(32) "analytics-dashboard/customizable" 
  [4]=> string(9) "marketing" 
  [5]=> string(10) "onboarding" 
  [6]=> string(21) "shipping-label-banner" 
  [7]=> string(12) "store-alerts" 
  [8]=> string(5) "wcpay" 
  [9]=> string(10) "homescreen" 
}

So, looking at this, you can easily disable more features along with Marketing Hub. For example if you want to disable Analytics along with ** Marketing Hub**, you can just simply tweak the above code like this:

// Remove WooCommerce Marketing Hub & Analytics Menu from the sidebar - for WooCommerce v4.3+
add_filter( 'woocommerce_admin_features', function( $features ) {
	/**
	 * Filter the list of features and get rid of the features not needed.
	 * 
	 * array_values() are being used to ensure that the filtered array returned by array_filter()
	 * does not preserve the keys of initial $features array. As key preservation is a default feature 
	 * of array_filter().
	 */
	return array_values(
		array_filter( $features, function($feature) {
			return ! in_array( $feature, [ 'marketing', 'analytics', 'analytics-dashboard', 'analytics-dashboard/customizable' ] );
		} ) 
	);
} );

Hope this helps. 🙂

Special Thanks

@simplebutcreative
Copy link

Thanks for the code!

I'm working on cleaning up my woocommerce website. What's the name of the feature to disable the notification bar?

I'm using a plugin called "disable woocommerce bloat" to accomplish this. It works but it's missing something still. There's a feature called "disable woocommerce admin". It disables the woo home dashboard, analytics tab, and notification bar. That's fine but I wish it didn't disable the analytics tab. The developer should've separated the feature. I don't care for the woo home dashboard and notification bar but my customers will need the analytics tab to get a better read on their sales. The woo status meta boxes aren't enough.

@64bakerst
Copy link

Thank you! This is helpful!

Wondering if it's possible to also remove the "Extensions" link/area?

@isaumya
Copy link
Author

isaumya commented Oct 10, 2022

Hi @64bakerst,
Try printing the $features using var_dump() as shown above. If you see the feature you want to remove from that list then you can probably remove it as shown above.

@64bakerst
Copy link

Leaving this here - in case anyone was looking for the solution to hide Extensions Menu

/* Disable extensions menu WooCommerce */
add_action( 'admin_menu', 'wcbloat_remove_admin_addon_submenu', 999 );
function wcbloat_remove_admin_addon_submenu() {
remove_submenu_page( 'woocommerce', 'wc-addons');
}

add_filter( 'woocommerce_allow_marketplace_suggestions', '__return_false', 999 ); //Extension suggestions
add_filter( 'woocommerce_helper_suppress_admin_notices', '__return_true' ); //Connect to woocommerce.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment