Admin Menu Editor For WordPress
Here is my latest and hack-iest plugin yet – Admin Menu Editor. It’s a WordPress plugin that will let you manually edit the Dashboard menu. You can reorder the menus, show/hide specific items, change access rights, and more. The plugin is still a bit rough around the edges, so a good understading of WP internals is recommended (but not required).
Features
- Sort menu items any way you want by simple drag & drop.
- Move a menu item to a different submenu via cut & paste. Note that if you move an item that belongs to a plugin, you will need to modify the “File” attribute to point to the right parent file (e.g. instead of “akismet-key-config” use “options-general.php?page=akismet-key-config”).
- Edit any existing menu – change the title, access rights, menu icon and so on. Note that you can’t lower the required access rights, but you can change them to be more restrictive.
- Hide/show any menu or menu item. A hidden menu is invisible to all users, including administrators.
- Create custom menus that point to any part of the Dashboard. For example, you could create a new menu leading directly to the “Pending comments” page.
Here’s a screenshot :
Download
admin-menu-editor.zip (33 KB)
Requirements :
- WordPress 2.7 or later
- PHP 5 or later
Known Issues
The basic idea for the plugin was suggested by several commenters way back in October. However, the internal menu system that WordPress uses is obscure and unsuitable for direct manipulation, so I spent quite a while inventing workarounds. And even after a few weeks of pondering, there are some things I haven’t quite fixed.
- If you delete any of the default menus they will reappear after saving. This is not a bug, it’s a feature
- As I mentioned before, the access rights required for using a particular menu item can’t be lowered, but can be made more strict. I think.
- Also, a plugin’s menu that is moved to a different submenu will not work unless you also include the parent file in the “File” field. This is because WP “ties” the menu item to it’s parent menu and won’t recognize it in a different submenu.
- If you create a custom menu (or change the “File” setting of an existing menu), be sure to tick the “Custom” checkbox. Otherwise that item will not show up in the final Dashboard menu.
Merry Christmas, by the way

This is a known issue. The plugin errs on the side of caution and doesn’t automatically remove menu items that point to a non-existent page.
I’ll put this on my to-do list, but I can’t promise it will get fixed soon – there are other things that take priority right now.
Just FYI – I love this plugin, but now it has a conflict with Disqus that renders this plugin completely unconfigurable while Disqus is activated. When I deactivate Disqus, I can change the settings on Menu Editor, and thank goodness they seem to stick even when I re-activate Disqus. My guess is that it happened with the latest Disqus update and is a javascript conflict.
Hmm, I installed Disqus in my test blog and the menu editor still worked fine… So I’ve got no idea what the conflict might be.
Assuming it really is a JS conflict, check your browser’s error console for the specific error message.
Benjamin Allison, I am also running a WPMU website.
The Site Admin menu seems to be getting added to every blogs admin area.
Although users cannot access the pages on it.
Are you finding this too? Were you able to overcome it?
I am looking for a similar plugin, I rememebr having seen it somewhere, where one could specify what menus are available for what users/roles/etc…
i.e. excluding the TAGS menu for everyone, etc…
Hi,
I have noticed that the Admin Menu Editor plugin does not work when the WPML plugin (http://wpml.org) is activated also. (WP 2.8.4)
Once WPML activated, if I go to the Menu Editor option in the admin, I cannot drag the items around or click any option. It seems to be a JS issue. It gives the error “menu.defaults is undefined” in menu-editor.js line 110.
Other users seem to have the “menu.defaults is undefined” error issue. Is there any solution to this ?
I don’t have a solution as of yet. The problem is I can’t replicate the bug – when I activate WPML the menu editor continues to work without a hitch.
[...] önskade innehållstyper är skapade installerar du pluginet Admin Menu Editor som ger dig fria händer att möblera om (och dölja saker) i [...]
Someone emailed me about how they solved the “menu.defaults is undefined” problem; I’m posting their comment here (with permission) as it might help other users :
[...] Admin Menu Editor Permet de personnaliser les éléments du menu et de ses sous-menus d’administration. [...]
White Shadow, this might have been asked already before, but is there a reason why this AMAZING plugin of yours is not listed in the official WP plugin repository?
It’d be nice to get noticed about updates and stuff. Plus, I am sure you’re cutting off quiet a big piece of potential new users by not having it listed in there, and that will never find out such a useful plugin. To me Menu Editor is a must-have for each and every WP installation.
It’s mainly due to my laziness. Nevertheless, listing in in the wp.org repository is on my Cthulhu-forsaken to-do list.
Just do it, man! The plugin deserves it. Your work deserverves it!
(When my blog’s up, I’ll write a review on Menu Editor).
Any chance you added this plugin to the WP.org repository ?
Also is there a way to change visibility to menus by user-roles ?
Oh very well. It’ll be up on wordpress.org in a few days (provided they process the inclusion request quickly).
There’s no way to change visibility by role yet, maybe someday.
YEEEEEEEEEEEEEEEEEEEEEEEEEEESSSSSS!
It’s alive!
You will probably need to (re)install it from the link above to make the automated updating feature work. This is because the directory name has changed.
Hi, this plugin don’t work in WP 2.9. Please help. Thank you.
Could you elaborate? I’ve used it with WP 2.9 and it seemed to work fine.
getting this error
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /home4/plugins/admin-menu-editor/menu-editor-core.php on line 13
It seems your server has an older version of PHP. This plugin requires PHP 5 or later.
damnit
Hi, I’d just like to say that this is incredibly useful for setting up non-technical people with the ability to post and edit content. Thank you for giving this a try!
If you keep having difficulties with coding, please consider focusing on how we can provide views for basic functions like editing, categorizing, comments, and the like? These are the things that we need to provide for non-technical people, and since they’re the proverbial bulk of the iceberg, any help we can get is – really helpful
This looks great i ahve installed it but am a bit baffled by all the options, are there any instructions or a manual for this plugin?
Not really. But if you need help with anything specific, feel free to ask.
Just wanted to say a massive thank you for this plug-in.
I’ve been after this functionality ever since I started using WP.
Cheers!!
>>>> “Not really. But if you need help with anything specific, feel free to ask.”
I don’t quite understand the ‘file’, ‘access level’, ‘theme’, ‘page title’ and ‘icon’ options.
Most importantly i’d like to remove certain menus for certain users, is this possible?
Which CSS file would i use to style each menu?
Thanks!
File identifies the page that will be opened when you click the menu. It can be an actual file or relative URL – like “index.php” for the front page of the Dashboard – or a plugin page ID – like “menu_editor” for this same plugin. When the menu is displayed, WordPress will automatically generate the actual URL for the plugin page. Typically, a plugin page URL looks like this – “main-menu-file.php?page=plugin_page_id”.
Access level determines who can see/access the menu item. Only users who have the “capability” set in the Access level field will be able to use that menu. See the in-depth discussion of user capabilities for details.
There is no “theme” field in the menu editor. I’ll assume you were referring to the CSS fields.
CSS class is the CSS class of the link that represents that particular menu item. It’s probably best to leave this one alone.
CSS ID is the ID of the list item that represents that particular menu item (in terms of HTML, the menu is rendered as an unsorted list). You could use this ID in the /wp-admin/css/wp-admin.css stylesheet to alter the look of the menu item.
Page title is just what it sounds like. It’s what you’ll see in your browsers title bar when you click on the menu in question. This allows you to have different captions for the menu itself and for the page it leads to. Useful if the full page title is too long to fit in the menu without looking broken up.
Icon is an internal WP setting that indicates what icon the top-level menu will have. I would advise not messing with this one.
Awesome, thanks man. No idea where i got ‘themes’ from….
Would i add styles to ‘wp-admin.css’ ?
I think that would work, though there probably is a separate plugin for this kind of thing.