Àpèjúwe
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Ìtumọ̀ Yorùbá: ’s account.
What you can do — as a site administrator
MaestroÌtumọ̀ Yorùbá: ’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Ìtumọ̀ Yorùbá: ’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Ìtumọ̀ Yorùbá: ’re authorized to see it. ThatÌtumọ̀ Yorùbá: ’s because a pageÌtumọ̀ Yorùbá: ’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Ìtumọ̀ Yorùbá: ’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 lateadmin_menupass, applies rename/icon/visibility to the$menu/$submenuglobals and reorders submenus. Top-level order uses the corecustom_menu_order+menu_orderfilters. 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_filehighlighting 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_menupass; 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.
Àwọn àwòrán ìbòjú






Ìgbéwọlẹ̀
- In your dashboard, go to Plugins Add New, search for “Maestro: The Inline Admin Menu Editor”, and click Install Now, then Activate.
- Or upload the plugin zip via Plugins Add New Upload Plugin, then activate it.
- Or, manually: unzip into
wp-content/plugins/maestro-menu-editorand activate from Plugins. - After activating, click Edit Menu in the admin bar to start editing the admin menu in place.
FAQ
-
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Ìtumọ̀ Yorùbá: ’s registered capability. To truly block all access to a page, use a capability manager such as
User Role Editor or PublishPress Capabilities. -
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. The hide by role feature includes the administrator role. However, you have to be an administrator to use MaestroÌtumọ̀ Yorùbá: ’s features, so if you hide a menu item from administrators, you are hiding it from yourself as well.
Remember that this is cosmetic, not a permission change, and you can reset any or all of the changes made in Maestro at any time.
-
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.
-
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.
Àwọn àgbéyẹ̀wò
Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.
Àwọn Olùkópa & Olùgbéejáde
“Maestro: The Inline Admin Menu Editor” jẹ́ ètò ìṣàmúlò orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa sí plugin yìí.
Àwọn OlùkópaTúmọ̀ “Maestro: The Inline Admin Menu Editor” sí èdè rẹ.
Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?
Ṣàwárí koodu, ṣàyẹ̀wò ibi ìpamọ́ SVN, tàbí ṣe àgbékalẹ̀ sí àkọsílẹ̀ ìdàgbàsókè nípasẹ̀ RSS.
Àkọsílẹ̀ àwọn àyípadà
1.2.0
- Redesigned edit-mode toolbar: every control is now a compact icon button in one consistent system, with colour signalling meaning — green for editing/saved, amber for unsaved changes, red for Reset All. Fully accessible: each control keeps its name for screen readers and shows a tooltip on hover.
- Mobile: the editor is reachable on phones now — the admin-bar “Edit Menu” toggle stays visible at small screen widths (it was hidden before), and the toolbar and controls are sized for touch.
- “Edit Mode” indicator: a persistent, glanceable cue that youÌtumọ̀ Yorùbá: ’re editing, plus a one-time first-run hint highlighting the menu.
- Rename: the field shows a placeholder label, and the transient “Saved” confirmation now clears itself after a moment so the toolbar stays quiet.
- Reorder: keyboard (Alt+Arrow) and the new ▲/▼ buttons leave menu separators in place; the per-item Reset button is disabled when thereÌtumọ̀ Yorùbá: ’s nothing to undo.
- Robustness: Maestro engages WordPressÌtumọ̀ Yorùbá: ’s menu-order machinery only when youÌtumọ̀ Yorùbá: ’ve actually reordered top-level items (otherwise it stays out of other plugins’ way); the stored configuration is size-bounded; and concurrent save / reset / exit actions are race-safe.
- Fix: the “modified” indicator now sits on the changed rowÌtumọ̀ Yorùbá: ’s label for items that have submenus.
1.1.1
- Editor: the selected itemÌtumọ̀ Yorùbá: ’s name is now screen-reader-only — the visible breadcrumb duplicated the rename field and ate horizontal space, and the controls are self-explanatory. Screen-reader users still get the item/submenu context.
- Editor: shorter reset button labels — “Reset Item” and “Reset All”.
1.1.0
- Keyboard reordering: select a menu item, then press
Alt+ArrowUp/Alt+ArrowDownto 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Ìtumọ̀ Yorùbá: ’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.
