A Quick Overview
If you’re looking to remove the Elementor upsell ads from your WordPress dashboard, you’ve come to the right place. This guide provides step-by-step instructions to clean up your Elementor interface, making it easier to navigate. For those who want a quick solution, you can also opt for a plugin available on GitHub.
Understanding Elementor and Its Upsells
Elementor has gained popularity among WordPress users because of its powerful website-building capabilities. However, one common complaint is the presence of upsell advertisements for premium features, which can clutter the dashboard and distract users. While upgrading to Elementor Pro is the easiest way to eliminate these ads, not everyone is ready to make that investment. Fortunately, there are methods to remove these promotional elements without paying for the pro version.
Why Consider Upgrading to Elementor Pro?
Let’s be honest—if you’re committed to using Elementor for your website, buying Elementor Pro might be worthwhile. The premium version not only removes upsells but also provides numerous advanced features, extensive support, and regular updates. If you want to see the differences between the two versions, check out Elementor’s official pricing page for more details on what you would get with the Pro version.
Your Options for Removing Upsells
If you’re not ready to invest in Elementor Pro, you can still enjoy a cleaner interface by removing upsell notifications through code. We’ll walk you through creating a custom PHP class to hide these ads effectively.
Creating Your Custom PHP Class
First, you’ll want to create a PHP class dedicated to removing Elementor’s upsells. This keeps your code organized and ensures that if you decide to upgrade to the Pro version later, it won’t interfere with your current setup. (WordPress.org)
class WPEX_Remove_Elementor_Upsells {
public function __construct() {
if ( did_action('elementor/loaded') ) {
$this->register_actions();
} else {
add_action('elementor/loaded', [ $this, 'register_actions' ]);
}
}
public function register_actions(): void {
if ( is_callable('Elementor\Utils::has_pro') && Elementor\Utils::has_pro() ) {
return; // Skip if using Elementor Pro.
}
// Additional code will go here...
}
}
new WPEX_Remove_Elementor_Upsells;
Removing Unwanted Admin Pages
Elementor adds several admin pages that primarily serve as landing pages for upselling the Pro version. It’s time to remove those unnecessary options from your menu. The following admin pages can be eliminated: You might also enjoy our guide on How to Stop WordPress from Generating Unwanted Image Sizes.
- Submissions
- Custom Fonts
- Custom Icons
- Custom Code
- Add-ons
Update your register_actions method to look like this:
public function register_actions(): void {
if ( is_callable('Elementor\Utils::has_pro') && Elementor\Utils::has_pro() ) {
return;
}
add_action('elementor/admin/menu/after_register', [ $this, 'remove_admin_pages' ], PHP_INT_MAX, 2);
}
Then, you should add a new method named remove_admin_pages that will handle the removal process:
public function remove_admin_pages( $menu_manager, $hooks ): void {
$pages_to_remove = [];
$subpages_to_remove = [];
if ( is_callable([ $menu_manager, 'get_all' ]) ) {
foreach ( (array) $menu_manager->get_all() as $item_slug => $item ) {
if ( isset($hooks[$item_slug]) && is_object($item) &&
( is_subclass_of($item, 'Elementor\Modules\Promotions\AdminMenuItems\Base_Promotion_Item') ||
is_subclass_of($item, 'Elementor\Modules\Promotions\AdminMenuItems\Base_Promotion_Template')) ) {
$parent_slug = is_callable([ $item, 'get_parent_slug' ]) ? $item->get_parent_slug() : '';
if ( ! empty($parent_slug) ) {
$subpages_to_remove[] = [ $parent_slug, $item_slug ];
} else {
$pages_to_remove[] = $hooks[$item_slug];
}
}
}
}
foreach ( $pages_to_remove as $menu_slug ) {
remove_menu_page($menu_slug);
}
foreach ( $subpages_to_remove as $subpage ) {
remove_submenu_page($subpage[0], $subpage[1]);
}
}
Handling the Add-ons Page
While the Add-ons page may seem beneficial, it primarily showcases premium plugins, which may not be relevant for users of the free version. To remove it, just extend the previous method with an additional condition:
if ( is_subclass_of($item, 'Elementor\Modules\Promotions\AdminMenuItems\Base_Promotion_Template') || 'elementor-apps' === $item_slug ) {
}
Hiding the Add-ons Link from the Admin Bar
If you’re going to remove the Add-ons page, you’ll also want to prevent the link in the Elementor top bar from showing up. To hide it, simply add some custom CSS:
add_action('elementor/admin_top_bar/before_enqueue_scripts', [ $this, 'admin_top_bar_css' ]);
public function admin_top_bar_css(): void {
wp_add_inline_style(
'elementor-admin-top-bar',
'.e-admin-top-bar__bar-button:has(.eicon-integration){display:none!important;}');
}
This CSS snippet targets the button directly, making it invisible in the Elementor admin bar.
Conclusion
With these modifications, you can effectively remove Elementor upsells from your WordPress dashboard, resulting in a cleaner and more focused interface. While purchasing Elementor Pro is an option, implementing this code offers a free alternative for those who aren’t ready to commit financially. For more tips, check out How to Migrate a WordPress Site to Pressable (and When It’s .
FAQs
1. Can I remove Elementor upsells without upgrading to Pro?
Yes, you can use custom code to remove upsell notifications if you prefer not to upgrade to the Pro version. (Google Web.dev)
2. Is it difficult to implement the code provided?
While it requires some familiarity with PHP and WordPress hooks, the instructions are straightforward. Just follow along carefully to avoid missing must-have steps.
3. Will these changes affect my Elementor functionality?
No, as long as you follow the instructions correctly, removing upsells won’t impact your current Elementor features.
4. Where can I find the code mentioned in this guide?
You can copy the code directly from this guide or create a plugin using the provided snippets.
5. What if I change my mind and want to upgrade to Elementor Pro later?
If you choose to upgrade, simply disable or remove the custom code to restore the default functionality.
