Codeable info

WordPress Plugin Developers Need To Stop Adding Plugins To The Top Level Admin Menu

Posted on by in Blog

Over the last year or so I’ve seen more and more WordPress plugin developers adding their plugin menu to the top level of the admin menu rather than as a sub level. I find this growing trend very frustrating as it clutters up the admin area needlessly.

At the moment I have just as many plugin menus in the top level of the WP Mods admin area as I do in the sub menu of the settings and tools menus. Below is a screenshot of my admin menu. I have also pasted a screenshot of the default WordPress menu for comparison to illustrate what the top level menu looks like before plugin developers wreak havoc on it.

Top Level Admin Menu In WordPress

By default WordPress has 11 top level menus in the admin area:

  • Dashboard
  • Posts
  • Media
  • Links
  • Pages
  • Comments
  • Appearance
  • Plugins
  • Users
  • Tools
  • Settings

The only top level menu I’d be happy to see moved to a sub level is links as I rarely use it on my sites (I have used it on my personal blog though I don’t update that much). I appreciate why links are in the top level of the menu as some bloggers update their blogroll frequently. Likewise, I’ve not used the comments menu since moving my comments to Livefyre but previously it was a section I visited regularly to moderate comments and spam. Media is a section I don’t tend to visit often either though I do find it useful to have it in the main menu as images are such an important part of blogging.

Due to the theme and plugins I’m using on WP Mods, I also have adn additional 11 menus in the top level menu of the admin area. This has doubled the size of the left hand side admin menu in my admin area.

  • Jetpack
  • Social Metrics
  • BuySellAds
  • Forms
  • Theme Options
  • Pippity
  • Simply Exclude
  • Performance
  • WSD Security
  • SEO
  • Thank Me Later

Clearly, many of these items shouldn’t be here. Many WordPress plugin developers, and to a lesser degree theme developers, are taking liberties with the admin menu in order to give their plugin more exposure in your admin area.

Where Should Plugin Menu Links Be Placed?

In the ‘Determining Location for New Menus‘ guide, WordPress advise that:

Before creating a new menu, first decide if the menu should be a top-level menu, or a sub-level menu item. A top-level menu displays as new section in the administration menus and contains sub-level menu items. A sub-level menu means the menu item is a member of an existing menu.

It is rare that a plugin would require the creation of a top-level menu. If the plugin introduces an entirely new concept or feature to WordPress, and needs many screens to do it, then that plugin may warrant a new top-level menu. Adding a top-level menu should only be considered if you really need multiple, related screens to make WordPress do something it was not originally designed to accomplish. Examples of new top-level menus might include job management or conference management. Please note with the native post type registration, WordPress automatically creates top-level menus to manage those features.

If the creation of a top-level menu is not necessary, decide under what top-level menu to place your sub-level menu item. As a point of reference, most plugins add sub-level menu items underneath existing WordPress top-level menus. For example, the Backup plugin adds a sub-level menu option to the Tools top-level menu. Please note with the taxonomy registration, WordPress automatically creates sub-level menus under the applicable top-level menu to manage those features.

The part that really stands out for me in this guide is that it is rare that a plugin requires the creation of a top level menu and should only be considered if there are multiple related screens required.

It is rare that a plugin would require the creation of a top-level menu. If the plugin introduces an entirely new concept or feature to WordPress, and needs many screens to do it, then that plugin may warrant a new top-level menu. Adding a top-level menu should only be considered if you really need multiple, related screens to make WordPress do something it was not originally designed to accomplish.

The way I see it, the top level should be for menus that you access all the time. It should be for menus that you check every day or at least every week. I login to WP Mods pretty much every day. Even when I’m not writing articles I’m doing other things like checking stats or ensuring schedule posts publish ok. As such, I know which admin menus I use most frequently.

So let’s look at the 11 additional top level menus that have been added to my admin area and see if they are really needed.

  • Jetpack – I don’t really check the stats that Jetpack provides though the recent Jetpack update has actually tided the admin menu up a little by moving VaultPress from a top level menu link to a sub menu of Jetpack. Akismet is also placed under the Jetpack menu. Individually I wouldn’t want Jetpack, VaultPress or Akismet in the top menu themselves though I have less issues with them all being grouped together.
  • Social Metrics – Social Metrics is a useful plugin that shows you how your latest posts and pages have performed on social media sites such as Twitter and Facebook. It’s a text book example of a plugin that shouldn’t be in the top level menu. Bearing that in mind, I do find that I check it semi-frequently and must admit that I find it quite useful being in the top level.
  • BuySellAds – One of the best examples of a plugin developer taking advantage of the menu area to promote their brand. There is absolutely no reason for the BuySellAds link to be listed in the top level of the menu. I don’t even use BuySellAds to sell banner ads on WP Mods anymore, I only use it to sell a banner ad in the WP Mods RSS feed. After entering your BuySellAds site key and changed some settings, you will never need to view the settings page ever again. It needs to be removed.
  • Forms – I’m of two minds on whether having Gravity Forms in the top level of the admin menu. On the one hand, there are several areas such as new forms, edit forms, entries and updates etc. Checking entries will be particularly useful for many Gravity Forms users though apart from periodically checking the spam bin, I never have to view the forms menu as all entries are emailed directly to me. I’d personally move it to under the settings area.
  • Theme Options – The theme that I am currently using has its own top level menu for the options area. This is very common with themes with options areas. I would personally prefer all theme options menus to be placed as a sub menu of Appearance as after you setup a theme you only rarely go back to change the settings again.
  • Pippity – I use the Pippity plugin for displaying a pop up for the WP Mods newsletter. After setting up your forms and split testing different designs to see what works, you don’t need to go back into the settings area and change anything. The only reason for accessing the Pippity menu on a regular basis would be to check stats but the analytics section doesn’t work so I’d prefer to remove it.
  • Simply Exclude – Another example of a plugin that has no right to be in the top level of the admin menu. Simply Exclude lets you exclude specific categories from the front page, archives, search results or your feed. Once you’ve set it up, you’ll never go back to it, so it should be placed as a sub menu of the settings or tools menu.
  • Performance – W3 total Cache is a huge plugin that has around a dozen sub menus (though many of these such as FAQ, support and about could be placed on the one page). I’d prefer to see this placed as a sub menu under tools as after setting things up you won’t be accessing this area often.
  • WSD Security – WSD is a great security plugin for WordPress. I’d prefer to see it placed under the Tools menu as it’s not something you need to access frequently.
  • SEO – I feel the same way about the WordPress SEO plugin from Yoast as I do for W3 Total Cache. The plugin has lots of sub menus though once it’s all set up you won’t need to go back often. As such, I’d rather see it removed. (On a side issue, it’s good to see Yoast finally remove those annoying dashboard widgets that promoted his site in the admin area).
  • Thank Me Later – The thank me later plugin lets you send an email to first time commenter’s on your site. There is no need for this to be in the top level menu.

I’m sure everyone has a different opinion as to what should and shouldn’t be added to the top level menu. It really depends on how and what you use WordPress for. I’d personally like to see security, SEO, caching and other maintenance plugins tucked away under the tools menu. These plugins have lots of different settings that need to be configured though once you have set everything up you won’t need to go back regularly.

A new stats menu link could be useful to bloggers who check stats a lot however the tools menu is probably just as appropriate. For example, on WP Mods I could move Jetpack site stats, Social Metrics and Pippity Analytics and have 3 less top level menu links.

So what can be done about all of this? Well, WordPress have been clear that it is rare for a plugin to be added to the top level menu though I don’t think it’s practical for WordPress to check every single plugin to ensure this happens. Therefore I would love to see WordPress developing an option in the settings area that lets you define where plugin menus are placed. For example, a ‘plugin menu settings’ page would allow you to set whether a plugin was listed in the top level of the menu or as a sub menu of tools, settings, media, posts, users etc.

Surely there is a plugin available that can do this……

WordPress Plugin Solution?

In my research I came across two WordPress plugins that let you change what is shown in your admin menu: Simple Admin Menu Editor & Admin Menu Editor.

Simple Admin Menu Editor is a simple plugin that lets you show or hide specific menu items. It hasn’t been updated in about a year and a half and unfortunately the plugin doesn’t work. When I tested the plugin it gave me an error message about not having permission to make a change to the menu. When I went back to the admin area I found that instead of hiding the one menu I wanted to hide, the plugin hid several, including important ones like posts and settings etc. To resolve the issue I had to deactivate the plugin. Not recommended.

Admin Menu Editor works a lot better. It is very user friendly and has a lot of cool features. In addition to customising your admin menu, it also lets you change the required capability level for accessing a plugin menu. You can’t lower a plugins restriction level however you can increase it (which is what you generally want).

Admin Menu Editor

The plugin interface is really user friendly. Top level admin links are shown on the left hand side whilst sub menus are shown on the right hand side. The right hand column changes depending on what menu you have selected on the left hand side. You can cut, copy, paste, add, show, hide and delete menus. You can also add separators to help you customise different sections of your menu. Strangely, there is an option for sorting links by ascending or descending order for sub menu links but this is absent from the top level menu.

One of the best features of the plugin is the ability to load the default menu back up at any time. If you upgrade to the pro version ($15) you can import and export your menus too.

Unfortunately, the plugin didn’t do everything that it was supposed to do. Hiding specific menu items seemed to work well as did moving items to a different location on the top level. I’m sure many WordPress users would find this useful however I didn’t want to delete or hide menu links completely, I just wanted to move some top level menu links to a lower level.

Sadly, moving top level links to a lower level doesn’t work. You are supposed to select a link, cut it and then paste it in the sub menu of your choosing. Cutting and pasting works on the top level however the paste option doesn’t work in the sub level. This means that you can’t move unwanted menu links from the top level to a sub level, which is specifically what I need the plugin to do.

Perhaps this isn’t a big though. Perhaps it doesn’t work because the top level menus that I tried to move also had sub menus and WordPress isn’t setup for 3 levels of menus. Though this makes the cut and paste feature kind of pointless as there are no top level menus that have no sub menus. Hopefully this issue will be addressed in a future version as it would make Admin Menu Editor the perfect solution for customising your admin menu.

Overview

There is a need for some plugins to be placed in the top level of the admin menu however in my opinion the vast majority of plugins that are being added there by plugin developers should be placed in a sub level. I appreciate that developers want to give their plugins and their websites maximum exposure though I don’t think that placing links in the top level of the admin menu or automatically adding self-promoting widgets to the WordPress dashboard is the way to do it.

I have absolutely no problem with developers adding logos and and links back to their site in their plugins and themes and I’m sure I’ll do the same when I release products in the future. Though it’s possible for plugin developers to push traffic to their own websites without cluttering up the users admin area and making their overall WordPress experience less productive.

Here’s hoping more plugin developers take note of the official WordPress guidelines in future and only add their plugin to the main menu when absolutely necessary. I’m a realist though and know that this isn’t something that will happen without a friendly nudge in the right direction by WordPress themselves (i.e. enforcing their guidelines).

Regardless of where plugin developers place their plugin in the admin menu, I hope that WordPress add the option of customising the admin menu to the WordPress core in future. This would allow all WordPress users to hide menu links of features they never use and move links of less important options to a more convenient location.

As always, yours thoughts on this subject are welcomed, encouraged and appreciated :)

Thanks for reading,
Kevin

)
Codeable info

Comments (5)

Comment by Lane Lester says:

Great post that mirrors my frustrations as a website installer, but regretfully without providing a solution. I posted on the WP plugin support forum about the deficiency in Admin Menu Editor, and the developer told me moving the top-level items is included in the Pro version. For two sites it’s $19, but for unlimited it’s $59.

Comment by Kevin Muldoon says:

@[email protected] The Admin Menu Editor plugin that I worked would have been perfect but it didn’t work correctly. If they could fix the cut and paste option it would be perfect for moving top level menus to a sub menu.

Comment by Kraft says:

@Kevin Muldoon @jkohlbach I’m only in pre-alpha of developing my first plugin for possible distribution (as opposed to some custom work for clients that I didn’t want to reside in functions.php), but I wish there was more flexibility for changing the admin. I know there are a couple of plugins that would let you rename menus, move order, suppress, etc.

In regards to top-level items, if there was an option to “hide” in the WP core with a toggle to “view hidden” that would be nice. I’m sure plenty of people would not want it as it would make support/tutorial/etc a lot more difficult since everyone’s admin could look a lot different, even with the same themes/plugins/etc. In the end, having a plugin to modify the admin menus is fine enough for me.

Comment by Kevin Muldoon says:

@jkohlbach I wasn’t aware that WordPress creates one by default when you declare the custom post type. It’s strange it does that considering their stance on the issue.

I do think that developers should try and place plugins under other top level menus. As I mentioned in my post, it’s debatable whether some premium plugins should or should not be placed on the top level. For example, your thirsty affiliates plugin would likely be used frequently by some users and not by others i.e. affiliate marketers and bloggers would probably add new affiliate links every week but others may only need the plugin for a few links and would perhaps prefer the menu to be in a sub level.

Would like to hear from more developers like yourself and more WordPress end users :)

Comment by jkohlbach says:

I totally get where you’re coming from and as a plugin developer myself I’m probably partly to blame, after all two of my premium plugins add top level menus.

However, in my defence and perhaps to shed some light on why there are now so many plugins with top level menus, the main reason a lot of plugins have top level menus is because WordPress creates one by default when you declare a custom post type.

I think it makes sense in some cases, but I guess maybe we should be moving to a convention where if a plugin requires a menu and it’s not because of a custom post type that needs administering, then it should reside under Plugins or Settings. The other problem is that if you can’t add a sub-sub-menu when you do that.

Interesting post, I hope it gets a bit more discussion!

Codeable info