A WordPress menu not showing means your navigation links have disappeared from your site’s header, footer, or sidebar, leaving visitors unable to navigate between pages. This is one of the most common WordPress issues — WordPress.org support forums show over 12,000 threads about missing menus, and WPBeginner reports that menu display problems account for roughly 8% of all WordPress troubleshooting queries. The cause is almost always one of six fixable issues: no menu assigned to a theme location, a theme or plugin conflict, a caching problem, a CSS rule hiding the menu, a broken theme update, or a corrupted menu structure in the database.
This guide walks through every cause of a WordPress menu not showing, with step-by-step fixes ordered from most common to least common. Each solution includes verification steps so you know exactly when the problem is resolved.
WordPress Menu Not Showing: Quick Reference
| Cause | Fix | Time to Fix | Frequency |
|---|---|---|---|
| No menu assigned to theme location | Appearance → Menus → Manage Locations → assign menu | 1 minute | Most common (WordPress.org forums) |
| Theme or plugin conflict | Switch to default theme, disable plugins one by one | 5-15 minutes | Very common (WPBeginner) |
| Caching issue | Clear site cache, browser cache, and CDN cache | 2-5 minutes | Common with caching plugins |
| CSS hiding the menu | Inspect element → find display:none or visibility:hidden → override | 5-10 minutes | Common after theme customization |
| Broken theme update | Re-upload theme or restore from backup | 10-30 minutes | Occasional (after updates) |
| Corrupted menu in database | Delete menu → recreate, or restore wp_terms tables | 15-30 minutes | Rare |
| JavaScript error blocking menu | Check browser console → fix or disable conflicting script | 5-20 minutes | Common with mega menu plugins |
| Mobile menu not showing | Check responsive breakpoints and mobile menu settings | 5-10 minutes | Common — 59.4% of traffic is mobile (StatCounter) |
Key Troubleshooting Statistics
| Statistic | Value | Source |
|---|---|---|
| WordPress sites worldwide | 43.5%+ of all websites | W3Techs, 2025 |
| Users who leave sites with broken navigation | 61% | Forrester Research |
| Menu-related support threads on WordPress.org | 12,000+ | WordPress.org Support Forums |
| Mobile traffic share globally | 59.4% | StatCounter, 2025 |
| Plugin conflicts causing display issues | ~52% of WordPress errors | Jeremias Jeane / Jeremias’ WP Data, 2024 |
| Average time to resolve menu issue | Under 15 minutes | WPBeginner troubleshooting data |
| Sites running outdated themes | 33% | Patchstack, 2025 |
Fix 1: Assign a Menu to a Theme Location
The most common reason a WordPress menu is not showing is that no menu has been assigned to a display location. WordPress separates menu creation from menu placement — you can build a menu in Appearance → Menus, but it will not appear on the site until you assign it to a theme location like “Primary Menu” or “Header Menu.”
How to check and fix this:
- Go to Appearance → Menus in your WordPress dashboard
- Select your menu from the dropdown at the top and click “Select”
- Scroll down to Menu Settings at the bottom
- Under Display location, check the box for your desired location (e.g., “Primary Menu,” “Main Navigation,” or “Header”)
- Click Save Menu
If you do not see any display locations listed, your theme may not have registered any menu locations. In that case, you can add a menu widget to a sidebar or header widget area via Appearance → Widgets.
Alternative method using the Customizer:
- Go to Appearance → Customize → Menus
- Click on Menu Locations
- Assign your menu to the appropriate location from the dropdown
- Click Publish
Verification: Visit your site in a new browser tab (or incognito window) and confirm the menu is visible.
Fix 2: Check for Theme Conflicts
A theme conflict is the second most common cause of a WordPress menu not displaying. This happens when a theme update breaks the menu template, when a child theme overrides the header incorrectly, or when the theme’s menu walker class has a bug.
How to diagnose:
- Go to Appearance → Themes
- Activate a default WordPress theme (Twenty Twenty-Five or Twenty Twenty-Four)
- Check if the menu appears on the front end
If the menu shows with the default theme, your original theme is the problem. Contact the theme developer or check these specific files in your theme:
| File | What to Check | Common Issue |
|---|---|---|
| header.php | wp_nav_menu() function call | Missing or incorrect theme_location parameter |
| functions.php | register_nav_menus() function | Menu locations not registered after theme update |
| style.css | Navigation CSS rules | Menu container hidden by display:none |
| Child theme header.php | Overrides parent header | Outdated copy missing new menu code |
The wp_nav_menu() function is what displays your menu. If your theme’s header.php doesn’t call it, or calls it with the wrong theme_location parameter, the menu won’t appear. A correct call looks like this:
<?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
Fix 3: Check for Plugin Conflicts
Plugin conflicts cause approximately 52% of all WordPress display errors, according to community-sourced data. A plugin can break your menu by:
- Enqueueing JavaScript that conflicts with the menu’s dropdown behavior
- Adding CSS that overrides menu styles
- Modifying the wp_nav_menu output via filters
- Causing a PHP fatal error that stops page rendering
How to diagnose and fix:
- Go to Plugins → Installed Plugins
- Deactivate all plugins at once (select all → Bulk Actions → Deactivate)
- Check if the menu appears
- If yes, reactivate plugins one by one, checking the menu after each activation
- When the menu disappears again, you have found the conflicting plugin
Common plugin types that conflict with menus:
| Plugin Type | Why It Conflicts | Examples |
|---|---|---|
| Menu enhancement plugins | Override default menu HTML/CSS | Max Mega Menu, UberMenu, Starter Templates |
| Page builders | Replace theme header with custom templates | Elementor, Beaver Builder, Divi |
| Caching plugins | Serve stale HTML without the menu | WP Super Cache, W3 Total Cache, LiteSpeed Cache |
| Security plugins | Block menu-related AJAX or REST API calls | Wordfence, Sucuri, iThemes Security |
| Optimization plugins | Minify/defer JS that the menu depends on | Autoptimize, WP Rocket, Perfmatters |
Fix 4: Clear All Caches
Caching is one of the most overlooked causes of a WordPress menu not showing. If you recently created or modified a menu, the cached version of your pages may still show the old (menu-less) version. According to WP Rocket, cached pages are the #1 reason users report “I saved my menu but it’s not showing.”
Clear caches in this order:
- WordPress caching plugin: Go to your caching plugin’s settings and click “Purge All Cache” or “Clear Cache”
- WP Super Cache: Settings → WP Super Cache → Delete Cache
- W3 Total Cache: Performance → Dashboard → Empty All Caches
- WP Rocket: WP Rocket → Dashboard → Clear Cache
- LiteSpeed Cache: LiteSpeed Cache → Toolbox → Purge All
- Server-level cache: If your host uses server caching (Cloudflare, RunCloud, Kinsta, WP Engine), purge it from the hosting panel
- CDN cache: If you use Cloudflare or another CDN, purge the cache from the CDN dashboard
- Browser cache: Press Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac) for a hard refresh
Verification: Open your site in an incognito/private browser window to see the uncached version.
Fix 5: Check for CSS Hiding the Menu
Custom CSS rules can hide your menu without any visible error. This commonly happens when someone adds CSS to hide the menu on certain screen sizes and accidentally hides it on all screen sizes, or when a theme update introduces CSS that conflicts with custom styles.
How to diagnose:
- Open your site in Chrome or Firefox
- Right-click where the menu should be and select Inspect (or press F12)
- Look for the menu’s HTML element (usually a
<nav>tag or a<div>with a class likemain-navigation,site-navigation, orprimary-menu) - Check the Styles panel on the right for any of these problematic rules:
| CSS Property | Effect | Fix |
|---|---|---|
| display: none | Completely removes the menu from the page | Change to display: block or display: flex |
| visibility: hidden | Hides the menu but it still takes up space | Change to visibility: visible |
| opacity: 0 | Makes the menu fully transparent | Change to opacity: 1 |
| height: 0 with overflow: hidden | Collapses the menu to zero height | Remove height: 0 or set overflow: visible |
| position: absolute with negative left/top | Moves menu off-screen | Reset position values |
| z-index: -1 | Places menu behind other elements | Set z-index to a positive value (99 or higher) |
To override the CSS, add your fix to Appearance → Customize → Additional CSS:
.main-navigation {
display: block !important;
visibility: visible !important;
opacity: 1 !important;
}
Replace .main-navigation with your theme’s actual menu class.
Fix 6: Fix JavaScript Errors
If your WordPress menu relies on JavaScript for dropdowns, mobile toggles, or mega menu functionality, a JavaScript error can prevent the menu from rendering or functioning. This is especially common with mega menu plugins and custom theme menus. According to HTTP Archive, the median WordPress page loads 22 JavaScript files, increasing the chance of script conflicts.
How to diagnose:
- Open your site in Chrome
- Press F12 to open Developer Tools
- Click the Console tab
- Look for red error messages
- Note which script file is causing the error
Common JavaScript errors that break menus:
| Error | Likely Cause | Fix |
|---|---|---|
| Uncaught TypeError: Cannot read property of null | Menu element missing from DOM | Check that the menu HTML exists; theme may not output it |
| jQuery is not defined | jQuery not loaded or deferred past menu script | Ensure jQuery loads before menu scripts; check defer/async settings |
| Uncaught ReferenceError: [variable] is not defined | Plugin script loaded in wrong order | Adjust script loading order or dequeue conflicting scripts |
| Navigation script timeout | Slow third-party script blocking execution | Move third-party scripts to footer or load them async |
Quick fix: If you identified a specific plugin’s script causing the error, deactivate that plugin and look for an alternative. If it is a theme script, contact the theme developer or check for theme updates.
Fix 7: WordPress Mobile Menu Not Showing
With 59.4% of global web traffic coming from mobile devices (StatCounter, 2025), a menu that works on desktop but not on mobile is a critical issue. Mobile menu problems are different from desktop menu problems because mobile menus typically use a separate toggle button (hamburger icon) and a different menu structure.
Common causes and fixes:
| Cause | Symptom | Fix |
|---|---|---|
| No mobile menu configured | Hamburger icon missing entirely | Check theme settings for mobile menu options; install a mobile menu plugin like Responsive Menu |
| Wrong CSS breakpoint | Menu disappears at certain screen widths | Inspect CSS media queries; adjust breakpoint (common: 768px, 1024px) |
| JavaScript toggle not working | Hamburger icon visible but clicking does nothing | Check console for JS errors; ensure toggle script loads on mobile |
| Menu assigned to desktop location only | Desktop menu shows, mobile shows nothing | Assign menu to mobile menu location in Appearance → Menus |
| Theme hides menu on mobile via CSS | Menu visible on desktop, hidden on mobile | Check for @media queries with display:none on the menu class |
Using Responsive Menu plugin to fix mobile menus:
If your theme does not provide a good mobile menu experience, the Responsive Menu plugin creates a dedicated mobile navigation that works independently from your theme’s menu. It supports hamburger icons, slide-in panels, and full-screen overlays, and it works with any WordPress theme. Over 100,000 WordPress sites use Responsive Menu for reliable mobile navigation.
Fix 8: Recreate the Menu (Database Corruption)
In rare cases, the menu data in the WordPress database becomes corrupted. This can happen after a failed migration, a database restore, or a plugin that directly modifies the wp_posts and wp_terms tables. If none of the fixes above worked, recreating the menu may be necessary.
How to recreate your menu:
- Go to Appearance → Menus
- Note down all your current menu items (take a screenshot for reference)
- Delete the existing menu by clicking Delete Menu
- Click Create a new menu
- Give it a name and add your pages, posts, custom links, and categories
- Assign it to the correct display location under Menu Settings
- Click Save Menu
If you have database access, you can check the menu data directly:
- Menus are stored as terms in the
wp_termstable with taxonomynav_menu - Menu items are custom post types (
nav_menu_item) inwp_posts - If these tables are corrupted, restoring from a backup is faster than manual repair
Fix 9: Check Theme Updates and PHP Errors
According to Patchstack’s 2025 WordPress security report, 33% of WordPress sites run outdated themes. An outdated or recently updated theme can break menu functionality in several ways:
- A theme update may change how menu locations are registered
- PHP errors in the theme’s header.php can stop the menu from rendering
- A theme update may require a minimum PHP version your server does not meet
How to check for PHP errors:
- Add this line to your wp-config.php file temporarily:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
- Visit your site
- Check the debug log at
/wp-content/debug.log - Look for errors related to menu functions, header.php, or navigation
- Important: Set
WP_DEBUGback tofalseafter debugging (leaving it on exposes error details to visitors)
Prevention: Stop Menu Issues Before They Happen
| Prevention Step | Why It Works | Frequency |
|---|---|---|
| Back up before updating themes/plugins | Instant rollback if update breaks menu | Before every update |
| Use a staging site for testing | Catch menu issues before they hit production | Before major changes |
| Keep themes and plugins updated | Updates fix known bugs including menu issues | Weekly |
| Use a child theme for customizations | Parent theme updates won’t overwrite your menu code | One-time setup |
| Monitor uptime and errors | Get alerted immediately when something breaks | 24/7 monitoring |
| Document your menu structure | Faster recreation if menu data is lost | After each menu change |
Frequently Asked Questions
Why is my WordPress menu not showing after updating my theme?
Theme updates can reset menu location assignments or change the registered menu location names. Go to Appearance → Menus → Manage Locations and re-assign your menu to the correct location. According to WordPress.org support forums, menu location resets are the most reported issue after theme updates, affecting approximately 15% of major theme updates.
My menu shows on desktop but not on mobile. What should I do?
This is usually a CSS breakpoint issue or a missing mobile menu configuration. Check your theme’s responsive settings — many themes use separate menu locations for desktop and mobile. If your theme does not offer a mobile menu option, install a dedicated plugin like Responsive Menu, which creates an independent mobile navigation that works with any theme. With 59.4% of traffic coming from mobile devices (StatCounter, 2025), fixing mobile menu visibility should be a top priority.
How do I fix a WordPress menu that shows on some pages but not others?
This typically happens when specific pages use a different page template that either does not include the header or uses a different header file. Check the page template assignment in the page editor (right sidebar under “Page Attributes” or “Template”). If the template lacks a wp_nav_menu() call, switch to a template that includes one, or edit the template file to add the menu function.
Can a caching plugin hide my WordPress menu?
Yes. Caching plugins serve saved HTML snapshots of your pages. If you created or changed your menu after the cache was generated, visitors will see the old cached version without the menu. Clear your caching plugin’s cache, server cache, and CDN cache after any menu change. WP Rocket specifically recommends purging cache after menu edits in their documentation.
Why did my WordPress menu disappear after installing a new plugin?
Plugin conflicts are the most common cause of sudden menu disappearance. The new plugin may inject CSS that hides the menu, load JavaScript that conflicts with menu scripts, or modify the menu output via WordPress filters. Deactivate the newly installed plugin and check if the menu returns. If it does, contact the plugin developer or look for an alternative plugin that does not conflict with your theme’s navigation.
How do I fix a WordPress menu that shows as a plain list instead of a styled navigation bar?
When a menu displays as an unstyled bulleted list, it means the menu’s CSS is not loading. This can happen if your theme’s stylesheet failed to load (check for 404 errors in the browser console), if a CSS optimization plugin stripped the navigation styles, or if a recent theme update changed the CSS class names. Inspect the menu element and check if the expected CSS classes are present and styled.