WordPress admin bar cleanup

Remove admin bar items nobody uses

Disable Admin Bar Items lets you turn off any entry in the admin bar, WordPress's own or added by another plugin, so it stops rendering entirely instead of being hidden with CSS.

  • A toggle for every item actually present in your admin bar.
  • Detects entries added by plugins and themes automatically.
  • Removed server-side, not hidden with CSS a theme update can undo.
  • Individual sub-items, like My Account, can be disabled separately.
Admin Bar CleanupDisable Admin Bar Items

WordPress

Mobile Menu Toggle (mobile only)
WordPress Logo
Comments
└ My Account (Howdy)

Plugins & Themes

Query Monitor
4 items removedGone from the bar, not just hidden.
Active
Quick answer

What does Disable Admin Bar Items do?

When the disable_admin_bar_items module is active, TOWP_Disable_Admin_Bar_Items reads the admin bar's actual node list on admin_bar_menu at priority 99999, late enough to capture every item WordPress core and every active plugin has added, including nodes registered as late as the search box. That list, split into WordPress's own items and items from plugins and themes, is what populates the settings screen; toggling one on calls remove_node() for that specific entry, so it no longer renders at all rather than being hidden with CSS. A fallback build runs on admin_init too, so the list of available items still populates correctly even for a role where the admin bar itself is hidden by another setting.

The "never used, always in the way" problem

The admin bar fills up with things nobody clicks

A bar that fills up one plugin at a time ends up crowded with entries nobody deliberately asked for.

Default items assume a use nobody has

The WordPress logo menu leads to the support forums and showcase, the comments bubble appears even on a site with comments turned off entirely, and neither serves the site they're sitting on.

Every plugin adds its own entry

Each active plugin that touches the admin bar tends to add its own icon or menu, and the bar fills with entries meant for occasional configuration, not everyday use.

A dedicated WordPress solution

Turn items off at the source

The module reads what's actually in the admin bar and lets any of it be switched off completely, not painted over.

A list built from the real bar

The available items come from the admin bar's own node list, not a fixed list of guesses, so plugin-added entries appear automatically.

Removed, not hidden

A disabled item is removed from WordPress's own node list before rendering, rather than hidden with CSS that a theme or plugin update can bring back.

Individual sub-items, not just whole groups

Items nested under a group, like My Account, can be disabled on their own, without removing the entire group.

Verified feature set

A cleanup list built from reality

Every capability below is present in the supplied PHP class and its settings registration.

Grouping

WordPress items and plugin items, separated

Core WordPress entries and items added by plugins or themes get grouped separately in the settings screen.

Core vs pluginAuto-categorized
Removal method

remove_node(), not CSS

A disabled item is removed from the admin bar's own node tree, so it's genuinely gone rather than visually hidden.

remove_node()Server-side
Nested items

Sub-items exposed individually

Items inside a group node, like the account menu, get expanded into their own toggles instead of only offering the whole group.

top-secondaryExpanded children
Fallback discovery

Works even if the bar is hidden

A fallback builds the admin bar's node list independently on admin_init, so the settings list still populates for a role where the bar itself is hidden.

admin_init fallbackNo empty list
Always current

Refreshed on every admin load

The available-items list gets rebuilt on every admin page load, so it reflects newly installed or removed plugins automatically.

Auto-refreshedNo manual rescan
Practical use cases

Where trimming the bar helps most

The module supports every admin bar that's collected more than it actually needs.

Trimming a cluttered admin bar

Remove entries that never get used, from either WordPress core or an installed plugin, without hunting down a CSS snippet for each one.

Client-facing sites

Hide developer-facing items like Query Monitor's menu or a caching plugin's controls from accounts that shouldn't be touching them.

Mobile-specific cleanup

Turn off items like the mobile menu toggle if a custom mobile experience makes it redundant.

Operational benefits

A bar that only shows what's used

The module combines an accurate discovery pass, permanent removal and precise sub-item control.

Actually gone, not painted overSince removal happens before the bar renders, there's no CSS to conflict with or theme update to undo it.
No guessing what's thereThe settings list mirrors the real admin bar, so nothing needs identifying by digging through a plugin's source code.
Fewer accidental clicksAn item that serves no purpose on a given site is also one less thing someone could click by mistake.
Precise, not all-or-nothingDisabling one sub-item, like a specific account menu entry, doesn't require removing the whole group around it.
Performance behaviour

One pass, direct removal

The verified implementation reuses data WordPress already assembled, rather than duplicating any of it.

One list build per admin load

The available-items list gets rebuilt once per admin page load, from data WordPress already assembled for the bar itself.

No effect when nothing is disabled

If no items are toggled off, the module still records the list for settings but performs no removal at all.

A direct removal, not a display filter

Removing a node happens once, directly on the admin bar object, rather than through a repeated visibility check on every render.

Security implementation

Sanitized IDs, read-only discovery

The code sanitizes every node ID and never modifies anything while simply building the available-items list.

01

Administrator-only configuration

Only an administrator with access to TheOneWP settings can choose which admin bar items get disabled.

02

Node IDs are sanitized

Every node ID, both when building the list and when removing an item, passes through sanitize_key() before use.

03

No effect on capability checks

Removing an item from the admin bar doesn't touch the underlying capability that controls whether a user could otherwise reach that feature.

04

A read-only discovery pass

Building the available-items list only reads the bar's existing nodes; it never adds, modifies, or triggers anything on its own.

Verified compatibility

Built around native WordPress admin bar APIs

The supplied code integrates through APIs present in WordPress core. No compatibility claim beyond the verified implementation is assumed.

Discovery hook

admin_bar_menu, priority 99999

Runs late enough that every core and plugin-added node, including ones registered close to the end like the search box, is already present.

admin_bar_menuPriority 99999
Fallback hook

admin_init

Independently rebuilds the admin bar's node list when the bar itself isn't rendered for the current context.

admin_initIndependent rebuild
Removal API

WP_Admin_Bar::remove_node()

Uses the same method WordPress core and other plugins use to remove their own admin bar entries.

remove_nodeNative WordPress API
Solution comparison

TheOneWP versus common alternatives

Compare the verified Disable Admin Bar Items implementation with a typical hand-written CSS snippet.

CapabilityTheOneWP Disable Admin Bar ItemsOther common solutions
Discovering what's in the bar A live list generated from the actual admin barUsually a fixed list that misses plugin-added items
Removing an item Removed from the node tree before renderingOften hidden with a CSS snippet that a theme update can undo
Sub-items like My Account Toggled individuallyUsually only the whole group can be hidden at once
Staying current Rebuilt automatically as plugins changeA CSS snippet needs updating by hand for each new item
Administration One list inside TheOneWP settingsRequires writing and maintaining CSS or PHP by hand
Recommended workflow

Trim the admin bar in four steps

Start with the obviously unused core items, then work through what plugins have added.

01

Enable Disable Admin Bar Items

Activate the module from the TheOneWP Backend settings tab.

02

Review the generated list

Check the WordPress and Plugins & Themes groups for items that don't serve this particular site.

03

Toggle off what isn't needed

Switch off entries one at a time, or several at once, based on what actually gets used.

04

Revisit after adding a new plugin

A newly installed plugin's admin bar item appears automatically the next time the list refreshes.

Best practices

Trim with who's using it in mind

What's clutter for one role can be exactly what another role relies on.

01

Check with different roles in mind

An item that's clutter for one role might be exactly what another role needs; consider who actually sees the bar.

02

Start with the obviously unused core items

The WordPress logo menu and the comments bubble are common first candidates on sites that don't use either.

03

Leave developer tools visible for developers

Items like Query Monitor's menu are worth keeping for accounts that actually debug the site.

04

Recheck the list after major plugin changes

Removing or replacing a plugin can leave a stale toggle behind; the list rebuilds automatically, but it's worth a glance.

Common mistakes

Avoid assumptions that remove the wrong thing

The module has clear behaviour around groups and sub-items that's easy to misread.

Disabling an item and forgetting why

A missing menu entry can look like a bug later if there's no note about why it was turned off.

Removing an item everyone actually needs

Something that looks unused to one role, like the account menu, may be exactly how another role manages their own profile.

Assuming a sub-item toggle affects the whole group

Disabling one child item, like a single entry under My Account, leaves the rest of that group exactly as it was.

Frequently asked questions

Disable Admin Bar Items FAQ

These answers come directly from the verified class and its settings registration.

What does Disable Admin Bar Items do?

It lets an administrator turn off individual admin bar entries, WordPress's own or added by a plugin, so they stop rendering at all instead of being hidden with CSS.

Where does the list of available items come from?

From the admin bar's own live node list, read after every core and plugin item has registered, so plugin-added entries appear automatically.

Is a disabled item hidden with CSS?

No. It's removed from the admin bar's node tree before rendering, using the same remove_node() method WordPress itself uses.

Can I disable a specific item inside a group, like My Account?

Yes. Items nested under certain groups are exposed as their own individual toggles rather than only offering the whole group.

What happens to the list if I install a new plugin?

The available-items list rebuilds on every admin page load, so a newly added item appears the next time the settings screen loads.

Does this module work if the admin bar is hidden for some users?

Yes. A fallback independently rebuilds the item list on admin_init, so the settings screen still populates correctly.

Does removing an admin bar item change what a user can access?

No. It only removes the menu entry itself; the underlying capability or feature it linked to stays unaffected.

Can I tell which items came from WordPress core versus a plugin?

Yes. The settings screen groups items into "WordPress" and "Plugins & Themes" automatically.

Who can change which items are disabled?

Only an administrator with access to the TheOneWP settings screen.

Will a theme update undo my disabled items?

No. Since removal happens through WordPress's own admin bar API rather than CSS, a theme update has no effect on it.

Stop hiding admin bar clutter with CSS.Remove it for good instead.

Use Disable Admin Bar Items to turn off any entry, from WordPress core or a plugin, right from a list built from your own admin bar.