Skip to content
GPLWP Guides

How to customize the WordPress admin menu

Utilities Time About 20 minutes 6 steps Updated 15 Sep 2026

UTILITIES
The short answer

You can customise a few WordPress admin menu items manually with an `admin_menu` callback, using menu slugs to hide or alter them. For role-based visibility, drag-and-drop ordering, renaming, and repeatable changes across sites, a menu editor plugin is faster and safer.

The route
  1. 01Decide what to change
  2. 02Use the manual code route
  3. 03Add capability checks
  4. 04Rename and reorder carefully
  5. 05Check the result safely
  6. 06Take the fast route

What you need

  • Administrator access or permission to edit site files
  • A recent backup or staging copy
  • A child theme or site-specific plugin for custom code

Decide what to change

List the menu items you want to hide, rename, reorder, or add. Decide whether the change applies to everyone or only users with a particular capability. Use capabilities rather than checking role names where possible, because custom roles and permission changes can make role-name checks unreliable.

Remember that the admin menu is separate from the WordPress toolbar, dashboard widgets, and the permissions that protect each screen.

Use the manual code route

For a small, fixed set of changes, add code to a site-specific plugin or your child theme’s functions.php. WordPress builds the admin menu before the admin_menu action runs, which is the normal place to add or remove menu items. Use remove_menu_page() for a top-level item and remove_submenu_page() for a submenu item.

For example, the pattern is add_action( 'admin_menu', 'your_callback' );, followed by a callback containing the correct menu slug. A top-level item might use a slug such as tools.php; plugin and custom post type slugs are often different, so do not guess them.

Add capability checks

Wrap menu changes in a capability check when they should affect only certain users, such as if ( ! current_user_can( 'manage_options' ) ) { return; }. Hiding a link is not the same as securing the screen: WordPress documentation warns that removed submenu items may still be reachable by direct URL, so the underlying capability must also block access.

Test with a real account for each affected capability. Do not assume that an Editor, Shop Manager, or custom role has the same permissions on every site.

Rename and reorder carefully

Renaming or moving existing items requires changing the global menu arrays during admin_menu, or using WordPress’s menu-order filters. To customise top-level ordering, enable custom_menu_order and return the desired slug sequence through menu_order; items you omit stay after the listed items in their normal relative order.

Use the actual slug, not the visible label. Plugin menus may be registered later than core menus, so a removal can fail until you use a later priority. Submenus can also need a high priority, around 110, depending on when the plugin registers them.

Check the result safely

Clear any server, page, or object cache, then sign in as each affected user. Check the desktop and collapsed admin sidebar, submenu links, direct URLs, and screens added by plugins such as WooCommerce or page builders.

If an item does not disappear, inspect the registered menu slug rather than changing random hook names. A common Friday-afternoon failure is using remove_menu_page() for a submenu, or hiding a link while leaving the underlying capability open. Keep custom code in a site-specific plugin or child theme so a parent-theme update does not overwrite it.

Take the fast route

For drag-and-drop ordering, renamed labels, custom icons, and different menus for different roles, install and activate Admin Menu Editor Pro, then open its settings from the WordPress dashboard. Select a menu item, change its label, icon, parent, or visibility, and save the configuration. Its documented feature set includes menu rearranging, hiding, permission changes, custom menu items, and Pro controls for per-role visibility and exporting configurations.

The manual route is fine when you need two or three permanent changes and are comfortable maintaining PHP. Use the plugin route when non-developers need to edit menus, when several roles need different dashboards, or when you must repeat the same configuration across multiple sites.

The fast route

Let Admin Menu Editor Pro do it

Role-based menu visibility, renaming, icons, and drag-and-drop ordering for streamlining dashboards across sites.

Get Admin Menu Editor Pro

Sources

  1. developer.wordpress.org /reference/functions/remove_menu_page/?utm_source=openai
  2. developer.wordpress.org /reference/functions/remove_submenu_page/?utm_source=openai
  3. developer.wordpress.org /reference/hooks/custom_menu_order/?utm_source=openai
  4. developer.wordpress.org /plugins/administration-menus/top-level-menus/?utm_source=op…
  5. wordpress.org /plugins/admin-menu-editor/?utm_source=openai

Questions

Can I customise the WordPress admin menu without a plugin?
Yes, you can customise fixed menu changes without a plugin by adding PHP to a site-specific plugin or child theme. Use the <code>admin_menu</code> action with menu slugs to remove items, and WordPress’s menu-order filters to reorder top-level items. This works well for a small number of stable changes but becomes harder to maintain as plugins, roles, and menu slugs change.
Does hiding an admin menu item prevent access?
No, hiding an admin menu item does not reliably prevent direct access to its screen. Menu removal changes the navigation shown to the user, while capabilities control whether the requested page is allowed. Apply the correct capability restriction as well, and test the direct URL with an affected account before treating the screen as protected.
Why does remove_menu_page not work for my item?
The usual cause is using the wrong slug or using the top-level removal function for a submenu. Use <code>remove_menu_page()</code> for a top-level item and <code>remove_submenu_page()</code> for a submenu, then run the callback on <code>admin_menu</code>. Some plugins register menus later, so a higher action priority may be needed.
Can I show different admin menus to different roles?
Yes, but the manual method normally checks capabilities rather than role names and requires you to maintain the PHP yourself. A menu editor plugin can provide a visual per-role configuration, which is more practical when Editors, WooCommerce managers, clients, and custom roles need different menus. Always test the actual permissions as well as the visible menu.
Will a WordPress update undo my admin menu customisation?
A WordPress core update usually will not remove code stored in a site-specific plugin, but plugin updates can change menu slugs, labels, or registration timing. Parent-theme updates can overwrite edits made directly to the parent theme. Keep code in a child theme or site-specific plugin, and review the menu after major plugin and WordPress updates.