Title: Maestro: The Inline Admin Menu Editor
Author: Dan Knauss
Published: <strong>June 17, 2026</strong>
Last modified: June 17, 2026

---

Search plugins

![](https://ps.w.org/maestro-menu-editor/assets/banner-772x250.png?rev=3575264)

![](https://ps.w.org/maestro-menu-editor/assets/icon.svg?rev=3575264)

# Maestro: The Inline Admin Menu Editor

 By [Dan Knauss](https://profiles.wordpress.org/dpknauss/)

[Download](https://downloads.wordpress.org/plugin/maestro-menu-editor.1.1.0.zip)

 * [Details](https://wordpress.org/plugins/maestro-menu-editor/#description)
 * [Reviews](https://wordpress.org/plugins/maestro-menu-editor/#reviews)
 *  [Installation](https://wordpress.org/plugins/maestro-menu-editor/#installation)
 * [Development](https://wordpress.org/plugins/maestro-menu-editor/#developers)

 [Support](https://wordpress.org/support/plugin/maestro-menu-editor/)

## Description

**Maestro is an inline admin menu editor.** Instead of a separate settings
 screen,
it turns the WordPress admin menu into something you edit _in place_ — right where
it lives. Toggle **Edit Menu** from the admin bar and the menu becomes editable:
click a label to rename it, drag rows to reorder, swap a top-level icon, or hide
items from chosen roles.

**Try it first.** Launch a throwaway demo in
 [WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/dknauss/Maestro/main/playground/blueprint-hosted.json)—
it boots a site with Maestro active, User Switching, and test users (editor, author,
contributor, subscriber; password `password`) so you can try per-role visibility
by switching users before you install anything.

#### What you can do

 * **Rename** any top-level or submenu item — just click the label.
 * **Reorder** items by dragging (top-level items among themselves, submenu items
   
   within their parent), or with the keyboard (`Alt`+`Arrow`).
 * **Swap icons** on top-level items. The picker offers dashicons and bundled
    Bootstrap
   Icons with search, and accepts any of WordPress’s four native icon forms (dashicon,“
   none”, base64 image data-URI, or an image URL).
 * **Hide** items from chosen roles — including administrators. Custom roles
    registered
   by other plugins ([User Role Editor](https://wordpress.org/plugins/user-role-editor/),
   [Members](https://wordpress.org/plugins/members/), etc.) appear automatically.
 * **Reset** a single item to its WordPress default, or reset everything at once.

Changes are **global** — one configuration applies to everyone — and are stored

as a sparse delta layered over the menu WordPress builds on each load. Nothing is
rebuilt or duplicated, so a reset simply removes the delta and the original menu
returns.

#### Important: visibility is cosmetic, not access control

Hiding a menu item only declutters the menu. The underlying admin page still
 loads
for anyone who knows or types its URL, because a page’s own registered **capability**
is the true lock. Maestro operates on the menu (presentation), which is a different
plane from authorization.

If you need to actually _prevent_ access, pair Maestro with a capability manager:

 * **[User Role Editor](https://wordpress.org/plugins/user-role-editor/)** — the
   
   simplest way to edit what a role can do.
 * **[PublishPress Capabilities](https://wordpress.org/plugins/capability-manager-enhanced/)**—
   
   menu-aware; its Pro tier can block admin pages by URL.

The `maestro_capability` filter lets such a plugin hand editing rights to a
 custom
capability instead of the default `manage_options`.

#### Accessibility and localization

The editor is keyboard-operable end to end — select with `Enter`/`Space`,
 reorder
with `Alt`+`Arrow`, and every move and save is announced to screen readers. Modified
items carry a non-color indicator with screen-reader text, so state never depends
on color alone.

Maestro uses the `maestro-menu-editor` text domain and ships a translation
 template
plus starter language packs for Spanish (`es_ES`), German (`de_DE`), Japanese (`
ja`), French (`fr_FR`), Portuguese – Brazil (`pt_BR`), and Italian (`it_IT`). WordPress.
org language packs override and extend these; native-speaker and WordPress Polyglots
review is welcome.

### Architecture (for developers)

 * `Config` — reads/writes/sanitizes a single option (`maestro_config`) holding 
   only
    the deltas. Reset = delete the option; the natural menu returns automatically.
 * `Replay` — on a late `admin_menu` pass, applies rename/icon/visibility to the
   
   $menu/`$submenu` globals and reorders submenus. Top-level order uses the core`
   custom_menu_order` + `menu_order` filters. Resilient to missing slugs (orphans
   are skipped) and new items (appended at the end).
 * `Rest` — `maestro/v1/config` (GET/POST/DELETE), capability-gated, `X-WP-Nonce`.
 * The editor JS is driven by a localized model (with DOM ids), not DOM scraping,
   
   and diffs against captured pristine defaults so the stored config stays sparse.
 * Localized editor labels are passed from PHP to JavaScript in `maestroData.i18n`;
   
   the runtime zip includes the bundled POT template and starter catalogs.

### Known limits / deferred to v2

 * **Reparenting** (moving an item between a top-level position and a submenu) is
   
   not included. Top-level items reorder among top-level items and submenu items
   reorder within their current parent. Reparenting needs hand-splicing of the globals
   plus `parent_file`/`submenu_file` highlighting fixes — a known minefield, parked
   deliberately.
 * **Separators** are preserved in place but not yet add/move/delete-able; their
   
   generated slugs (`separator1`…) have no stable identity to key against.
 * **Renaming** an item drops any core-appended count badge (e.g. pending
    comments)
   from that label, since the badge lives inside the title string.
 * Submenu sort relies on items registering by the late `admin_menu` pass; a
    plugin
   that registers submenus on an unusually late hook may not be captured.

### Credits

Bundled [Bootstrap Icons](https://icons.getbootstrap.com/) are © The Bootstrap
 
Authors, licensed under the MIT License. They are recoloured to the WordPress menu
grey and embedded as data-URIs; see `bin/generate-bootstrap-icons.mjs`.

## Screenshots

[⌊Editing the admin menu in place — the Posts item selected, with the shared controls
panel (rename, icon, visibility, reset) open.⌉⌊Editing the admin menu in place —
the Posts item selected, with the shared controls panel (rename, icon, visibility,
reset) open.⌉[

Editing the admin menu in place — the Posts item selected, with the shared controls
panel (rename, icon, visibility, reset) open.

[⌊The icon picker: searchable Dashicons and bundled Bootstrap Icons tabs for swapping
a top-level admin menu icon.⌉⌊The icon picker: searchable Dashicons and bundled 
Bootstrap Icons tabs for swapping a top-level admin menu icon.⌉[

The icon picker: searchable Dashicons and bundled Bootstrap Icons tabs for swapping
a top-level admin menu icon.

[⌊Per-role visibility — hiding an admin menu item from selected roles (a cosmetic
declutter, not access control).⌉⌊Per-role visibility — hiding an admin menu item
from selected roles (a cosmetic declutter, not access control).⌉[

Per-role visibility — hiding an admin menu item from selected roles (a cosmetic 
declutter, not access control).

[⌊A renamed admin menu item, saved automatically by debounced autosave.⌉⌊A renamed
admin menu item, saved automatically by debounced autosave.⌉[

A renamed admin menu item, saved automatically by debounced autosave.

## Installation

 1. In your dashboard go to **Plugins  Add New**, search for “Maestro: The Inline Admin
    Menu Editor”, and click **Install Now**, then **Activate**.
 2. Or upload the plugin zip via **Plugins  Add New  Upload Plugin**, then activate
    it.
 3. Or, manually: unzip into `wp-content/plugins/maestro-menu-editor` and activate 
    from **Plugins**.
 4. After activating, click **Edit Menu** in the admin bar to start editing the admin
    menu in place.

## FAQ

### Does hiding a menu item block access to that page?

No — and this is important. Hiding an item is **cosmetic**: it removes the link

from the admin menu but does not stop anyone from reaching the page by typing or
bookmarking its URL. Real access is governed by each page’s registered capability.
To actually block a page, use a capability manager such as [User Role Editor](https://wordpress.org/plugins/user-role-editor/)
or [PublishPress Capabilities](https://wordpress.org/plugins/capability-manager-enhanced/).

### Do my changes affect everyone, or just me?

Everyone. Maestro stores one global configuration that applies to all users; it

is not per-user. Per-role _visibility_ lets you hide items from specific roles, 
but the rename/reorder/icon changes themselves are global.

### Can I hide items from administrators too?

Yes. Role visibility includes the administrator role, so you can declutter an
 admin’s
menu — remembering that this is cosmetic, not a permission change.

### Does it work with custom roles from other plugins?

Yes. Any role registered on the site — including custom roles from User Role
 Editor,
Members, and similar plugins — appears automatically in the visibility control.

### Is the editor keyboard accessible?

Yes. You can select, rename, reorder (`Alt`+`Arrow`), open the icon and
 visibility
controls, and reset items without a mouse. Saves and moves are announced to screen
readers.

### What happens when I deactivate or reset the plugin?

The admin menu returns to exactly what WordPress and your active plugins
 generate.
Your customizations live in a single option as a sparse delta; **Reset all** deletes
that option, and deactivating the plugin stops it from being applied.

### Can I move an item between a top-level position and a submenu?

Not yet. Reparenting is deliberately deferred (see “Known limits” below).
 Top-level
items reorder among top-level items, and submenu items reorder within their current
parent.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Maestro: The Inline Admin Menu Editor” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Dan Knauss ](https://profiles.wordpress.org/dpknauss/)

[Translate “Maestro: The Inline Admin Menu Editor” into your language.](https://translate.wordpress.org/projects/wp-plugins/maestro-menu-editor)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/maestro-menu-editor/),
check out the [SVN repository](https://plugins.svn.wordpress.org/maestro-menu-editor/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/maestro-menu-editor/)
by [RSS](https://plugins.trac.wordpress.org/log/maestro-menu-editor/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.0

 * Keyboard reordering: select a menu item then press `Alt+ArrowUp` /
    Alt+ArrowDown
   to move it. Each move is announced to screen readers (politely for success, assertively
   when already at the boundary). No mouse required.
 * Modified indicator: changed items show a non-color glyph (•) with screen-
    reader
   text “(modified)” in edit mode. The indicator refreshes live on every rename,
   icon change, visibility change, and reset.
 * Discoverable per-item reset: the **Reset this item** button in the controls
    
   panel is now keyboard-reachable (Tab + Enter/Space) and is visually emphasised
   whenever the selected item has unsaved overrides.
 * Solid bundled icons: the Bootstrap Icons set now uses solid (`*-fill`)
    variants,
   so it mixes naturally with WordPress’s dashicons in the picker.
 * Edit-mode polish: clearer toolbar grouping, a more scannable icon grid, and a
   
   dismissible first-run hint.
 * Native save status: the saving / saved / error states now use WordPress
    dashicons(
   a spinner, a check, a warning) instead of emoji glyphs that some platforms recoloured
   or dropped; the idle state shows no icon.
 * Fixes: the saved status no longer renders a double check mark; the rename
    field
   no longer shifts as the title length changes; toolbar controls wrap instead of
   overlapping on narrow screens.
 * Listing: rewritten description and FAQ, plus a “Try it first” link to a live
   
   WordPress Playground demo.

#### 1.0.0

 * Initial release: rename, reorder, per-role visibility, reset.
 * Icons: accepts all four native WordPress forms (dashicon, none, base64 image
   
   data-URI, image URL); picker bundles dashicons + curated Bootstrap Icons with
   search, keyboard accessibility, and mobile-sized touch targets.
 * Editor: click-to-select with a shared panel, debounced single-flight autosave,
   
   and folded-mode neutralization.

## Meta

 *  Version **1.1.0**
 *  Last updated **2 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [admin menu](https://wordpress.org/plugins/tags/admin-menu/)[admin menu editor](https://wordpress.org/plugins/tags/admin-menu-editor/)
   [hide menu items](https://wordpress.org/plugins/tags/hide-menu-items/)[menu editor](https://wordpress.org/plugins/tags/menu-editor/)
   [menu icons](https://wordpress.org/plugins/tags/menu-icons/)
 *  [Advanced View](https://wordpress.org/plugins/maestro-menu-editor/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/maestro-menu-editor/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/maestro-menu-editor/reviews/)

## Contributors

 *   [ Dan Knauss ](https://profiles.wordpress.org/dpknauss/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/maestro-menu-editor/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://www.paypal.com/paypalme/DanKnauss)