X

Remove All Admin Submenu Items

Snippets by IsItWP

Do you want to disable the entire list of submenu items from WordPress admin? While there’s probably a plugin for this, we have created a quick code snippet that you can use to remove all admin submenu items in WordPress.

Instructions:

All you have to do is add this code to your theme’s functions.php file or in a site-specific plugin:

function remove_submenus() {
  global $submenu;

  //Dashboard menu
  unset($submenu['index.php'][10]); // Removes Updates
  //Posts menu
  unset($submenu['edit.php'][5]); // Leads to listing of available posts to edit
  unset($submenu['edit.php'][10]); // Add new post
  unset($submenu['edit.php'][15]); // Remove categories
  unset($submenu['edit.php'][16]); // Removes Post Tags
  //Media Menu
  unset($submenu['upload.php'][5]); // View the Media library
  unset($submenu['upload.php'][10]); // Add to Media library
  //Links Menu
  unset($submenu['link-manager.php'][5]); // Link manager
  unset($submenu['link-manager.php'][10]); // Add new link
  unset($submenu['link-manager.php'][15]); // Link Categories
  //Pages Menu
  unset($submenu['edit.php?post_type=page'][5]); // The Pages listing
  unset($submenu['edit.php?post_type=page'][10]); // Add New page
  //Appearance Menu
  unset($submenu['themes.php'][5]); // Removes 'Themes'
  unset($submenu['themes.php'][7]); // Widgets
  unset($submenu['themes.php'][15]); // Removes Theme Installer tab
  //Plugins Menu
  unset($submenu['plugins.php'][5]); // Plugin Manager
  unset($submenu['plugins.php'][10]); // Add New Plugins
  unset($submenu['plugins.php'][15]); // Plugin Editor
  //Users Menu
  unset($submenu['users.php'][5]); // Users list
  unset($submenu['users.php'][10]); // Add new user
  unset($submenu['users.php'][15]); // Edit your profile
  //Tools Menu
  unset($submenu['tools.php'][5]); // Tools area
  unset($submenu['tools.php'][10]); // Import
  unset($submenu['tools.php'][15]); // Export
  unset($submenu['tools.php'][20]); // Upgrade plugins and core files
  //Settings Menu
  unset($submenu['options-general.php'][10]); // General Options
  unset($submenu['options-general.php'][15]); // Writing
  unset($submenu['options-general.php'][20]); // Reading
  unset($submenu['options-general.php'][25]); // Discussion
  unset($submenu['options-general.php'][30]); // Media
  unset($submenu['options-general.php'][35]); // Privacy
  unset($submenu['options-general.php'][40]); // Permalinks
  unset($submenu['options-general.php'][45]); // Misc

}
add_action('admin_menu', 'remove_submenus');

Note: If this is your first time adding code snippets in WordPress, then please refer to our guide on how to properly copy / paste code snippets in WordPress, so you don’t accidentally break your site.

If you liked this code snippet, please consider checking out our other articles on the site like: 30 ways to make money with online blogging and how to add a portfolio to your WordPress site.

Comments   Leave a Reply

  1. Print Form. Build-to-order Custom Manufacturing and Rapid Prototypes / Additive Manufacturing. Plastic and Metal materials. Any quantity.

  2. Is there a way to remove items based on user role?

  3. I needed to remove one specific sub-panel and wasnt able to find a way to access the sub-menus. Thank you so much for this script.

  4. Bolivar Amâncio Neto October 16, 2013 at 2:15 pm

    unset($GLOBALS[‘submenu’]);

  5. Zack Williamson August 16, 2013 at 4:48 pm

    I want to remove “My Sites” that is only ofund in WPMU but its not on the list provided. Its part of the index.php menu but I don’t know the number or where to find it so I’m stuck at….

    unset($submenu[‘index.php’][??]); // Removes My Sites

  6. Thanks Kevin.
    Is possible remove this sub-menu?

    – Appearence –> Sidebars
    – Appearance –> Editor

  7. Thanks Kevin. I try…but nothing changes:

    // Remove all admin $submenu items function remove_submenus() { global $current_user; get_currentuserinfo(); // change users in list $users = array( “User here”, ); if (!in_array($current_user->user_login, $users)) {
    unset($submenu[‘index.php’][10]); // Removes Updates unset($submenu[‘edit.php?post_type=page’][10]); // Add New page
    } } add_action(‘admin_menu’, ‘remove_submenus’);

  8. Kevin, is possible remove some submenu items based just on username?

    1. You could do this a few ways, eg: base on user role.

      if ( !current_user_can(‘author’)) {

      unset($submenu[‘index.php’][10]); // Removes Updates

      }

      or user name

      global $current_user;
      get_currentuserinfo();
      // change users in list
      $users = array(
      “ryan”,
      “steven”,
      “larry”,
      “jerry”
      );
      if (!in_array($current_user->user_login, $users)) {

      unset($submenu[‘index.php’][10]); // Removes Updates

      }

      something like this should work well for you, these of course should go inside the function.

  9. Thank you !
    But how to remove plugin settings submenu ?
    By example; I have “All in one favicon” plugin submenu that I want to remove.
    Regards.

  10. Stumbled across this, very handy doing this without plugins. Cheers!

    1. Cool glad to hear you like the snippet! Enjoy the rest of the site,

Add a Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our privacy policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

WordPress Launch Checklist

The Ultimate WordPress Launch Checklist

We've compiled all the essential checklist items for your next WordPress website launch into one handy ebook.
Yes, Send Me the Free eBook!