🔒 AdminGate
Hide WordPress admin menu items for individual administrator accounts — no code required. Free to download and use forever.
Overview
AdminGate is a free WordPress plugin that gives site owners a simple panel to control which admin menu items each administrator account can see. It works at the WordPress admin_menu hook level — hiding items without touching capabilities, roles, or any site content.
Common use cases:
- Keep a client's admin account focused — hide Plugins, Themes, or Settings they shouldn't touch.
- Onboard a new team member without overwhelming them with every menu option.
- Tidy up multi-admin sites where different people manage different areas.
Installation
- Download admingate-1.0.0.zip from boulleytechnology.ca/admingate.php.
- In your WordPress admin, go to Plugins → Add New → Upload Plugin.
- Choose the zip file and click Install Now.
- Click Activate Plugin.
- Navigate to Settings → AdminGate to start configuring.
The Settings Page
Go to Settings → AdminGate. The page is split into two panels:
- Left sidebar — lists all administrator accounts on the site. A red badge next to a name shows how many items are currently hidden for that user.
- Main panel — when you click an administrator, their full admin menu is displayed as a grid of cards. Each card represents one top-level menu item and its submenu entries.
Check a box to hide that item, then click Save Restrictions. Changes take effect immediately — the next time that administrator loads any admin page, the checked items will be gone from their sidebar.
Hiding Top-Level Menus
Each card in the grid corresponds to one top-level menu entry (e.g. Posts, Plugins, Tools). Checking the top-level checkbox hides the entire section including all of its submenu entries.
When a top-level item is checked:
- The card turns red with a strikethrough label.
- All child checkboxes are automatically locked — they are redundant since the parent is already gone.
remove_menu_page() function, which removes the top-level entry and all its associated submenus in one operation.Hiding Individual Submenu Items
To hide only a specific submenu entry while keeping the parent visible, leave the top-level checkbox unchecked and check only the child item(s) you want to hide.
Example: to hide Add New under Posts but keep the All Posts link visible — leave Posts unchecked, expand the card, and check Add New only.
parent_slug::child_slug pairs and removed via WordPress's remove_submenu_page() function.Protected Items
The Settings menu (options-general.php) is permanently protected and cannot be hidden for any user. Its checkbox is disabled and labelled Protected.
This ensures that no administrator can accidentally hide the AdminGate settings page from themselves, locking them out of the configuration panel.
Clearing Restrictions
To remove all restrictions for a user at once, click the Clear All button below the menu grid and then save. All menu items will be restored for that administrator.
To remove a restriction for a single item, uncheck the relevant box and save.
Privacy & Telemetry
AdminGate sends a weekly anonymous ping to boulleytechnology.ca to help track active installs and prioritize updates. The data sent is:
- Site domain (e.g.
example.com) - Site name
- AdminGate version
- WordPress version
- PHP version
- Site locale
No personal data, no user information, no content, and no visitor data is ever transmitted. An activation event fires when the plugin is first activated, and a deactivation event fires when it is deactivated.
All requests are non-blocking (fire-and-forget) with a 5-second timeout and have no impact on page load performance.
Troubleshooting
A menu item I restricted is still showing
Make sure you saved after checking the box. Also check that no other plugin is re-registering that menu item at a very late priority (after AdminGate's enforcement at priority 9999). If a plugin registers a menu at priority 10000 or later, AdminGate cannot remove it.
The menu grid shows fewer items than the target user's sidebar
The grid is built from the menu of the administrator currently logged in (the one configuring AdminGate). If the target user has different plugin access or different capabilities, their menu may differ slightly. In practice, administrators typically see the same set of items.
Restrictions disappeared after updating AdminGate
Restrictions are stored in WordPress user meta and persist across plugin updates. If they disappear, check that the user meta key admingate_restrictions is intact via your database or a user meta viewer.
FAQ
Does this affect the frontend of my site?
No. AdminGate only affects the WordPress admin sidebar. It has zero frontend footprint — no scripts, no styles, and no output on the public-facing site.
Can users bypass the restrictions?
A technically savvy user could navigate directly to a hidden page via URL if they know the address. AdminGate is a UI simplification tool, not a security enforcement layer. For true access control, use role-based capability management.
Does it work on multisite?
AdminGate works on standard single-site WordPress installs. Full multisite network support is on the roadmap.
Will my restrictions survive a WordPress update?
Yes. Restrictions are stored in user meta, which WordPress updates never touch.
What happens if I deactivate AdminGate?
All menus are immediately restored for all users. The restriction data remains in user meta but is ignored until AdminGate is reactivated.
Support
AdminGate is a free plugin maintained by Boulley Technology. For questions or bug reports, contact us at:
- Email: [email protected]
- Website: boulleytechnology.ca/contact.php