plugin-icon

Maestro: The Inline Admin Menu Editor

Rename, reorder, change icons, and hide WordPress admin menu items per user role — an inline admin menu editor you drive right on the menu itself.
Version
1.2.0
Senast uppdaterat
Jun 22, 2026
Maestro: The Inline Admin Menu Editor

Maestro lets you orchestrate the appearance of the WordPress admin menu.

Instead of a separate settings screen, Maestro turns the 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 menu item to rename it, hide it from selected user roles, or change its icon. Drag submenu items and whole menu groups to reorder them.

Try Maestro right here. Launch a disposable demo in WordPress Playground — 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 to another user’s account.

What you can do — as a site administrator

Maestro’s enhancements are only activated for logged-in users with an Administrator role. They can:

  • 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 icon picker offers Dashicons and bundled Bootstrap Icons with search. It 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, 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. Your custom menu configuration is stored as a sparse delta (just the differences) 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 if they’re authorized to see it. That’s 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 like PublishPress Capabilities**. It’s menu-aware, and 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 their state is never indicated by 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 reviews are 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).
  • Restmaestro/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 are © The Bootstrap Authors, licensed under the MIT License. They are recoloured to WordPress menu grey and embedded as data-URIs; see bin/generate-bootstrap-icons.mjs.

Support This Plugin

If Maestro saves you time or brings you or your clients the joy of a tidy admin menu, you can support its ongoing maintenance through GitHub Sponsors.

Gratispå betalda paket
Testat upp till
WordPress 7.0
Detta tillägg är tillgängligt för nedladdning för din .