We need to talk about the WordPress Admin Menu. For years, the left navigation has been a “Wild West” where any plugin developer can claim a top-level spot, leading to a cluttered, unmanageable sidebar. Consequently, users are left hunting for basic tools between a sea of custom icons and poorly organized submenus.
A recent proposal on the Core Make blog suggests a radical shift in how we handle this space. Specifically, it explores moving from an “every plugin for itself” model to a structured hierarchy. While the current extensibility of WordPress is its greatest strength, the lack of enforced order is becoming its biggest UX bottleneck.
The Problem with the Current WordPress Admin Menu
The technical “gotcha” here is how add_menu_page() and add_submenu_page() operate. They allow developers to specify a priority, but when you have 40+ plugins installed, those priorities inevitably clash. Therefore, your sidebar looks less like a professional dashboard and more like a junk drawer.
I’ve written before about building WordPress admin pages that don’t break later, but even the best-coded page is useless if the client can’t find it. The current proposal suggests a hierarchy where Core WP items come first, followed by a dedicated “Plugins” section. Beneath this, larger universes like WooCommerce could live in their own drill-down panels.
The Naive Approach: Cluttering the Root
Most developers ship their plugins by hooking into admin_menu and demanding root access. Here is the standard, albeit messy, way it is done today:
<?php
add_action( 'admin_menu', 'bbioon_naive_menu_placement' );
function bbioon_naive_menu_placement() {
// This adds yet another top-level item, pushing Core links further down
add_menu_page(
__( 'My Heavy Plugin', 'textdomain' ),
__( 'Heavy Plugin', 'textdomain' ),
'manage_options',
'bbioon-heavy-plugin',
'bbioon_render_page',
'dashicons-admin-generic',
2 // Forcing it high up near the Dashboard
);
}
The Senior Approach: Filtering for Order
If we want to fix the WordPress Admin Menu today, we should be using the menu_order filter. This is how I refactor sites for clients who are drowning in sidebar noise. However, this is a workaround for a problem that Core needs to solve architecturally.
<?php
add_filter( 'custom_menu_order', '__return_true' );
add_filter( 'menu_order', 'bbioon_enforce_menu_hierarchy' );
function bbioon_enforce_menu_hierarchy( $menu_order ) {
if ( ! $menu_order ) return $menu_order;
// Specifically define the order we want
return array(
'index.php', // Dashboard
'separator1', // First separator
'edit.php?post_type=page', // Pages
'edit.php', // Posts
'upload.php', // Media
'separator2', // Second separator
'plugins.php', // Plugins
'themes.php', // Appearance
'options-general.php', // Settings
);
}
Reimagining the Workspace
The proposal introduces the idea of “pinning” or showing the three most recently accessed plugins under the Dashboard. Furthermore, it suggests that for specific niches like LMS or eCommerce, those plugins should get “top billing.” This acknowledges that for many business owners, WooCommerce is the website.
If you’re struggling with menu visibility, you might also find that your admin menu search query is failing you, making navigation even harder. A unified hierarchy reduces the cognitive load and prevents the sidebar from becoming a bottleneck for productivity.
Look, if this WordPress Admin Menu stuff is eating up your dev hours, let me handle it. I’ve been wrestling with WordPress since the 4.x days.
The Takeaway
Rethinking the left navigation isn’t just about moving icons; it’s about defining the hierarchy of intent. Whether through pinning or a strict Core-vs-Plugin separation, the WordPress Admin Menu needs to evolve. We need to move away from the hacky priority wars and toward a system that respects the user’s workflow. Refactor your menus, ship it, and keep the UI clean.