Admin Menu Editor For WordPress

Admin Menu Editor is 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.

Features

  • Sort menu items any way you want by simple drag & drop.
  • Move a menu item to a different submenu via cut & paste.
  • Edit any existing menu – change the title, access rights, menu icon and so on. Note that in the free version you can’t relax menu permissions – i.e. give access rights to a role that originally didn’t have them – 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 :

Admin Menu Editor screenshot

This plugin also has a Pro version that offers a bunch of extra features.

Download

admin-menu-editor.zip

The latest version of the plugin is always available on WordPress.org.

Requirements :

  • WordPress 4.1 or later
  • PHP 5.2 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. This has been fixed in the Pro version.
  • Plugin menus that are moved to a different submenu will not work unless you put the full page URL in the “URL” field. This is because WP “ties” the menu item to it’s parent menu and won’t recognize it in a different submenu.
Related posts :

556 Responses to “Admin Menu Editor For WordPress”

  1. I said buggy in my last comment. What I meant was:

    when changing links to a default menu, it creates a duplicate item. So what you need to do is create a new item (from scratch or via copy/paste), HIDE the original menu item, then make the desired modifications to the new menu item.

  2. White Shadow says:

    Mhm, that’s a known issue – the plugin identifies menu items based on their URL, so if you change the URL the menu item will be treated as a new item. At the moment there’s no way to change this without making the already hacky “plugin menu <— > WP menu” interface an even greater mess.

  3. As you said, it’s not a but it’s a feature!

    It’s a very issue considering how powerful this plugin is.

    And, fwiw, it seems to be working 100% on WPMU. Again, excellent work.

  4. Tad says:

    Hi im experiencing a problem where the menu items are not dragging or dropping or anything. is this a javascript problem?

  5. White Shadow says:

    Yep, probably a JS issue. Try a different browser. Also, there might be a conflict with another plugin that uses JS (I haven’t encountered any conflicting plugins myself, but it’s possible).

  6. danf says:

    I knew it would have been too good to be true to expect this to work with the fluency2 admin interface – and it was. If you want brownie points, it would be awesome to use both your plugin and the fluency2 one. (upon saving any changes in your interface and refreshing, the entire page goes blank) Otherwise, great plugin. Here is fluency2 in case your interested:

    http://deanjrobinson.com/projects/fluency-admin/

  7. danf says:

    Actually, I spoke too soon, I get an error even when that plugin is not installed. Here is the error:
    PHP Fatal error: Cannot use object of type stdClass as array in /home/dev-coding411/public_html/wp-content/plugins/menu-editor/menu-editor.php on line 395

    The code is as follows:
    //Add the new entry to the menu tree
    $tree[$topfile] = $entry;

    Any ideas? Maybe it will work after all once this is resolved.

  8. White Shadow says:

    Hmm, apparently my “backwards-compatible” JSON decoding function wasn’t really all that “compatible”. It would return an object even when an associative array was requested. This should be fixed now.

  9. danf says:

    Same issue – It doesnt look like there are any changes in the new download. Has it been updated?

  10. White Shadow says:

    Should be 0.1.2 now, was 0.1.1 before.

    In any case, I’m still pretty sure it’s the JSON thing. I’ll run more tests tomorrow.

  11. danf says:

    Ah – maybe it was fixed, but the download is still showing 0.1.1 – just downloaded again to verify.

    may just need to update download link. Or is there some otherplace to download betas that I am missing?

  12. White Shadow says:

    I tried the link just now and it’s showing 0.1.2 for me. Perhaps some kind of web cache on your end?

  13. danf says:

    Sweet – I had to download it in IE to get latest. Not sure why caching in Firefox.

    Loaded it and it works! Thanks!

  14. Hannes says:

    a simple name, but a plugin with decent effects – it works great and is capable of a lot more than I need at the moment, and above all so sweet in ajax!

    BUT ) :
    only on my localhost! (Ubuntu Intrepid)
    When I moved the things to my server, the javascript breaks “somehow”:

    Firefox’ Error Console sez:
    Error: menu.defaults is undefined
    Source File: http://…/wp-content/plugins/menu-editor/menu-editor.js?ver=2.7
    Line: 110
    (note: I don’t get this error on my localhost)

    Server is: Apache/2.2.3 (Debian) mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch7 mod_perl/2.0.2 Perl/v5.8.8 Server at … Port 80

    I also tried different browsers and a windows box but it didn’t work out…

  15. White Shadow says:

    I’ve thought about this and got nowhere. I’d need to see the problem firsthand to figure it out.

    You might try debugging the script yourself; I’d be happy to help with that 😉 The first thing I’d check is whether the JSON-encoded menu structure (on the editor’s page) contains the “defaults” array for each menu item. If yes, there might be something wrong with the jQuery JSON plugin I use. If no, the next thing to check is the wp2tree() function in the .php file…

  16. David says:

    Awesome plugin!

    Is there any way to transfer the settings that I’ve made on one blog to another blog or installation of wordpress? Can it be exported or something?

    Thanks!

    David

  17. White Shadow says:

    Not in this version, but thanks for the idea.

  18. Sarah says:

    This is a wonderful idea for a plugin and exactly the kind of thing I was searching for. I see above that you’re aware of the issue with the broken links when an item is moved over. It would definitely be nice if at least the path can be automatically included in the file field so that there aren’t so many broken links. I think that’s the biggest downside to this plugin.

    I’m a PHP developer, but never created any WordPress Plugin so I’m not sure if that’s even possible with the way WordPress is setup. Just saying. 🙂

    However, you have done a great job so far and I will eagerly be awaiting updates! Thank you for making this plugin!

    Another suggestion for the future that would be really nice is the ability to drag menu items between one menu and another instead of having to cut and paste.

    Thanks again for the plugin!

  19. Hannes says:

    My problem got solved somehow – I don’t know what changed but now it works without bugs. It even stoped duplicating the qTranslate Language Buttons!

    I’m perfectly happy now! Thanks for your work and efforts and your quick reply!

Leave a Reply