plugin-icon

Maestro: The Inline Admin Menu Editor

投稿者: Dan Knauss·
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.
バージョン
1.4.1
最終更新日時
Aug 5, 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 demo in WordPress Playground — it boots a throwaway site with the plugin active in edit mode, plus 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.

Performance & footprint

Maestro is built to stay out of the way:

  • Zero extra database queries on the front end. Every hook is admin-only, so the plugin is completely inert for public page loads and logged-out visitors.
  • One extra query on an admin page — a single, non-autoloaded option (maestro_config), read once per request and cached. With a persistent object cache (Redis / Memcached) that drops to zero.
  • Nothing added to alloptions. Because the option is not autoloaded, it adds no weight to the bundle WordPress loads on every request.
  • Minimal storage. One wp_options row, created only when you first save a change — a fresh install stores nothing. No custom tables, no post or user meta, no transients, no cron jobs. Uninstalling deletes that single row.
  • Small install — roughly a 115 KB download. Menu changes are applied in memory during the admin_menu pass, not through extra queries.

(Figures are a v1.4.1 snapshot.)

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.

無料有料プラン
インストールすることで、WordPress.com の利用規約サードパーティプラグイン利用規約に同意したことになります。
最大テスト回数
WordPress 7.0.3
このプラグインをダウンロードして、 サイトに使用できます。