WordPress Menu Not Appearing on Website - Display Fix
You go to Appearance > Menus in WordPress.
You create a new menu. You name it "Main Menu".
You add menu items. Homepage, About, Services, Contact.
You go to "Display location" and select "Primary Menu".
You click "Save Menu".
You visit your website.
No menu appears.
Where your navigation should be, there's just empty space.
You check the admin again. The menu is there. Items are assigned. Display location says "Primary Menu".
But the front end is blank.
A client called us. They'd just rebuilt their WordPress navigation. They spent 2 hours organizing menu items, creating categories, setting up submenus. Everything looked perfect in the admin.
Then they checked the website.
No menu.
Not broken. Not styled weirdly. Just completely invisible.
They thought they wasted 2 hours. We found the problem in 2 minutes.
The theme didn't support menus. It had a hardcoded navigation in the theme files. The WordPress menu system was set up, but the theme wasn't using it.
A simple theme change or a fallback fix got the menu displaying immediately.
Menu issues always have a simple cause. But there are 8 different causes that look identical from the outside: blank menu, no navigation.
Here's how to diagnose which one is yours and fix it.
Why WordPress Menus Don't Appear
Understanding the possible causes helps you identify the fix.
- Menu not assigned to location: Menu exists but isn't set to display anywhere
- Theme doesn't support menus: Theme has hardcoded navigation, doesn't use WordPress menu system
- Menu location doesn't exist: Theme only has footer menu location, you're trying to set primary menu
- Menu items not added: You created menu but forgot to add items to it
- CSS hiding the menu: Menu exists but CSS sets display:none or visibility:hidden
- Mobile menu not showing: Menu works on desktop but hidden on mobile (responsive design issue)
- Theme customizer override: Custom theme settings override menu display
- Plugin conflict: Menu plugin or cache plugin interfering with display
- JavaScript error: Menu code is there but JavaScript broken, so dropdown/mobile menu doesn't function
Most of the time, it's #1 (menu not assigned to location) or #2 (theme doesn't support menus).
Step 1: Verify Menu Exists and Has Items
Start with the basics. Make sure the menu actually exists.
Check menu exists
- Go to Appearance > Menus
- Look at "Menu Settings" section
- See list of menus below
- Is there at least one menu listed?
- If no menus exist, create one:
- Click "Create New Menu"
- Name it "Main Menu"
- Click "Create Menu"
Check menu has items
- Click the menu name to open it
- Look for menu items listed
- See a list like "Home", "About", "Services", etc.?
- If list is empty, add items:
- On the left, look for "Add items to your menu"
- Find "Pages" section
- Select pages you want in menu
- Click "Add to Menu"
- Repeat for Custom Links if needed
- Click "Save Menu" at bottom
Step 2: Assign Menu to Display Location
The menu must be assigned to a location where the theme displays it.
Find available display locations
- Go to Appearance > Menus
- Scroll to "Display location"
- See a dropdown/checkbox list of locations
- Common locations:
- Primary Menu (top navigation)
- Secondary Menu (header area)
- Footer Menu (footer navigation)
- Social Links (social media icons)
If no display locations appear
This likely means your theme doesn't support menus.
- Your theme may use hardcoded navigation
- The theme needs updating or replacing
- Continue to Step 5 to verify this
Assign menu to location
- Check the checkbox next to "Primary Menu" (or main location for your theme)
- Make sure your menu is selected in the dropdown above
- Click "Save Menu"
- Visit your website
- Menu should now appear in the location where you assigned it
If multiple locations exist
- Assign to PRIMARY first (top navigation is usually primary)
- Visit website and verify it appears
- Then assign to SECONDARY locations if needed
- One menu can be assigned to multiple locations (will show everywhere)
- Or create separate menus for each location
Step 3: Check Theme Has Menu Support
Some older or minimal themes don't have built-in menu support.
Look for "Display location" in menu editor
- Go to Appearance > Menus
- Open any menu
- Scroll down to bottom
- Look for section that says "Display location" or "Menu settings"
- If this section exists, theme supports menus
- If section doesn't exist, theme doesn't support menus (continue below)
Check theme supports menus in code
- Go to Appearance > Theme File Editor
- Look for functions.php in the file list (right side)
- Click to open it
- Search for text "register_nav_menu" or "register_nav_menus"
- If found, theme supports menus
- If not found, theme doesn't support menus
If theme doesn't support menus
You have two options:
- Option 1: Switch to a modern theme that supports menus (recommended)
- Option 2: Add menu support to your theme (advanced, requires coding)
Option 2 requires editing theme functions.php:
- Go to Appearance > Theme File Editor
- Open functions.php
- Add this code at end of file (before ?> if it exists):
// Register primary menu location function my_theme_register_menus() { register_nav_menus( array( 'primary-menu' => __( 'Primary Menu' ), ) ); } add_action( 'init', 'my_theme_register_menus' ); - Save file
- Now you'll see "Display location" section in Menus
Then add menu to theme template:
- Edit header.php or index.php (wherever nav should appear)
- Add this code where you want menu:
<?php wp_nav_menu( array( 'theme_location' => 'primary-menu', 'fallback_cb' => 'wp_page_menu' ) ); ?> - Save file
- Menu should now display
If you're uncomfortable editing theme code, switch themes instead.
Step 4: Verify Menu Items Are Visible
Sometimes menu items exist but are hidden or set to not display.
Check menu items visibility
- Go to Appearance > Menus
- Open your menu
- Look at each menu item
- You may see checkboxes that say "Hide from menu" or similar
- Uncheck any hidden items
- Save menu
Check menu items have valid links
- In menu editor, expand each menu item (click arrow/down icon)
- Look at the link URL
- Make sure it's not empty
- Make sure it's a valid URL (starts with / or http)
- If URL is broken, fix it or delete item
- Save menu
Check menu item count
- Expand all menu items in menu editor
- Count how many items exist
- Is count zero? Then no items to display (add items first)
- Is count 5+ but menu still doesn't show on website?
- Continue to next step
Step 5: Disable Plugins to Find Conflicts
A plugin might be preventing menu from displaying.
Disable all plugins temporarily
- Go to Plugins > Installed Plugins
- Select all plugins (check "Select All" checkbox at top)
- Bulk Actions dropdown > Deactivate
- Click Apply
- All plugins now disabled
- Visit website
- Does menu appear now?
If menu appears after disabling plugins
A plugin is conflicting with menu display.
- Reactivate plugins one by one
- After each activation, visit website and check if menu still works
- When menu disappears, you found the conflicting plugin
- Either:
- Disable that plugin permanently
- Update plugin to latest version
- Switch to alternative plugin
Common plugins that conflict with menus
- Page builders (visual builders may replace menu with custom navigation)
- Caching plugins (may serve cached version without menu)
- Menu-specific plugins (multiple menu plugins enabled)
- Header/footer builder plugins
- Security plugins (may block menu display)
If menu doesn't appear even with all plugins disabled
Menu issue is theme-related, not plugin-related. Continue to next steps.
Step 6: Check for CSS Hiding the Menu
Menu may exist but CSS is hiding it.
Inspect menu element in browser
- Visit your website
- Right-click on where menu should be
- Select "Inspect" or "Inspect Element"
- Developer tools open on right side
- Look for HTML that contains menu (usually <nav> or <ul class="menu">)
- If you see HTML menu element, menu IS there, just hidden by CSS
Check CSS for display:none
- In developer tools, look at "Styles" panel
- Look for rules with:
- display: none
- visibility: hidden
- opacity: 0
- width: 0 or height: 0
- position: absolute with negative left/top
- If found, CSS is hiding menu
Find where CSS is coming from
- In developer tools Styles panel, click the .css filename
- This tells you which CSS file has the hiding rule
- Common files:
- style.css (theme stylesheet)
- custom.css (custom styles)
- header.css or nav.css
Fix the CSS
- Go to Appearance > Customize (or Theme File Editor)
- Find the CSS file causing the issue
- Look for .nav, .menu, or similar selector
- Remove or change the hiding property
- Instead of "display: none", use "display: block"
- Save changes
- Refresh website
- Menu should appear
Example CSS fixes:
/* Wrong: hides menu */
.nav { display: none; }
/* Right: shows menu */
.nav { display: block; }
/* Wrong: hides menu */
nav ul { visibility: hidden; }
/* Right: shows menu */
nav ul { visibility: visible; }
Step 7: Fix Mobile Menu Not Showing
Menu appears on desktop but not on mobile. This is a responsive design issue.
Check mobile menu toggle button
- Visit website on mobile device or use browser mobile view (F12 > Toggle Device Toolbar)
- Look for hamburger menu icon (three horizontal lines)
- Click it
- Does menu appear?
- If no, menu toggle isn't working
Inspect mobile menu HTML
- On mobile view, right-click hamburger icon
- Select "Inspect"
- Look for button with class like "menu-toggle", "hamburger", "nav-toggle"
- Click on it in the HTML
- Check if it has JavaScript attached
Check for JavaScript errors
- Open browser developer console (F12 > Console tab)
- Visit website on mobile view
- Look for red error messages
- If you see errors, JavaScript is broken
- Error messages will tell you which file is broken
Common mobile menu fixes
| Problem | Cause | Fix |
|---|---|---|
| Hamburger icon not clickable | Button missing onclick handler | Add JavaScript event listener to toggle menu |
| Menu appears but is unreadable | CSS not optimized for mobile | Add responsive CSS rules for mobile viewport |
| Menu won't close after clicking item | Missing close function | Add JavaScript to close menu on item click |
| Menu styled wrong on mobile | Missing @media queries | Add mobile CSS breakpoints |
Add basic mobile menu CSS if missing
- Go to Appearance > Customize > Additional CSS
- Add:
/* Mobile menu styles */ @media (max-width: 768px) { .nav { display: none; } .nav.active { display: block; } .menu-toggle { display: block; } } @media (min-width: 769px) { .nav { display: block; } .menu-toggle { display: none; } } - Save changes
- Test on mobile
Step 8: Check Theme Customizer Settings
Some themes have customizer options that control menu display.
Go to theme customizer
- Go to Appearance > Customize
- Look for sections related to menu or navigation
- Common sections:
- "Menu" or "Navigation"
- "Header"
- "Layout"
- "Advanced"
Check for display toggles
- In menu-related section, look for toggles like:
- "Show menu" or "Enable menu"
- "Menu display" or "Menu visibility"
- "Primary navigation" on/off
- Make sure toggle is ON/enabled
- Save changes if modified
Check menu assignment in customizer
- Some themes have menu assignment in customizer too
- Look for option like "Select Menu" or "Primary Menu"
- Make sure correct menu is selected
- Save changes
- Visit website
Step 9: Clear Cache and Refresh
Cache plugins or browser cache may be serving old version without menu.
Clear WordPress cache
- If using caching plugin (WP Super Cache, W3 Total Cache, etc.)
- Go to plugin settings
- Look for "Clear Cache" or "Purge Cache" button
- Click to clear all cached pages
- Visit website
Clear browser cache
- Close browser completely
- Or use Ctrl+Shift+Delete (Windows) or Cmd+Shift+Delete (Mac)
- Select "Clear browsing data"
- Select time range "All time"
- Check "Cached images and files"
- Click "Clear data"
- Reopen website
Clear Cloudflare cache (if using)
- If using Cloudflare CDN, go to dashboard
- Click "Purge Cache"
- Select "Purge Everything"
- Wait for cache to clear
- Visit website
Step 10: Use WordPress Menu Fallback
If theme has menu location but menu doesn't show, use fallback.
What is fallback?
A fallback displays automatic navigation if menu isn't assigned. Options:
- Show most recent pages
- Show category list
- Show custom HTML
- Show nothing
Add fallback to theme
- Go to Appearance > Theme File Editor
- Find where menu is displayed (look for wp_nav_menu call)
- Check if it has 'fallback_cb' parameter
- If not, add fallback:
<?php wp_nav_menu( array( 'theme_location' => 'primary-menu', 'fallback_cb' => 'wp_page_menu' // Shows pages as backup ) ); ?> - Save file
- Now if menu isn't assigned, pages display automatically
Better fallback: custom message
<?php
if ( !has_nav_menu( 'primary-menu' ) ) {
echo '<nav class="main-navigation">';
echo '<p>Please assign a menu to the Primary Menu location.</p>';
echo '</nav>';
} else {
wp_nav_menu( array(
'theme_location' => 'primary-menu'
) );
}
?>
This shows helpful message in admin when menu isn't assigned.
Real-World Menu Not Appearing Story
Scenario: A client switched WordPress themes. New theme looked beautiful. But after activation, the navigation menu disappeared completely. The menu existed in wp-admin but wasn't showing on the website.
What happened:
- Old theme supported menus
- Menu was assigned to "Primary Menu" location
- When switching to new theme, new theme didn't have "Primary Menu" location
- New theme had different location names: "Main Navigation" and "Footer"
- Menu was still assigned to non-existent "Primary Menu" location
- So menu didn't display anywhere
What we did:
- Checked new theme's available menu locations (Appearance > Menus)
- Saw it only offered "Main Navigation" and "Footer"
- Reassigned existing menu to "Main Navigation" location
- Menu appeared immediately
The lesson: Each theme defines its own menu locations. When switching themes, menu assignments don't automatically migrate.
WordPress Menu Not Appearing Checklist
Menu missing from website?
- ā Verify menu exists (Appearance > Menus)
- ā Verify menu has items (check item count > 0)
- ā Verify menu is assigned to display location
- ā Verify theme has menu support (check for "Display location" section)
- ā Verify menu items are visible (not hidden)
- ā Verify menu item links are valid URLs
- ā Disable all plugins and check if menu appears
- ā If menu appears after disabling plugins, find conflicting plugin
- ā Inspect page in browser to see if menu HTML exists
- ā If HTML exists, check for CSS hiding menu (display: none)
- ā On mobile, check if hamburger toggle works
- ā Check theme customizer for menu-related settings
- ā Clear WordPress cache if using caching plugin
- ā Clear browser cache (Ctrl+Shift+Delete)
- ā Clear Cloudflare cache if using CDN
- ā Check browser console for JavaScript errors (F12)
- ā Verify correct menu assigned to correct theme location
- ā Check if theme supports menus (may need code addition)
- ā Test with simple menu (just 2-3 items) to isolate issue
When to Contact Hosting or Theme Support
Contact support if:
- Theme doesn't have menu location available (hosting may help verify)
- You need help adding menu support to custom theme
- JavaScript errors in console preventing mobile menu
- CSS file path doesn't match after theme update
- Menu appears in some browsers but not others
- Menu was working before plugin update
- You're unsure how to edit theme functions.php safely
What to tell them:
"My WordPress menu is created and assigned to a location, but it's not appearing on the website. I've checked the admin and the menu definitely exists. Can you help me troubleshoot why it's not displaying on the front end?"
Theme support can usually diagnose menu issues within 1-2 hours.
The Real Talk
Menu problems feel dramatic. Navigation is one of the most important parts of your site. Without it, visitors can't get anywhere.
But the panic makes people overthink it. They assume the worst: theme broken, WordPress corrupted, hackers.
In reality, menu problems have one of 5-6 specific causes. All fixable in minutes.
Most common: menu exists but isn't assigned to a location. You created it and filled it with items, but forgot the crucial last step of selecting where to display it.
Second most common: you switched themes and the new theme uses different menu location names. Your menu is assigned to "Primary Menu" but the new theme only recognizes "Main Navigation".
Both are 30-second fixes. Check menu assignment, confirm theme location, save.
The hardest menu issues are when you need to add code (giving theme menu support) or edit CSS (removing hiding rules). But even then, it's just understanding what the code does and making the obvious fix.
Your menu isn't gone. It's either just not configured to display, or something is actively hiding it. Find which of those it is, and you're done.
