Skip to content 99% OFF 🎉 Anniversary Sale 99% OFF Shared Hosting Use Code HURRYUP Claim Offer 99% OFF Hosting
99% OFF Hosting — Code HURRYUP
Products
AI Website Builder New VPS Hosting Cloud Servers Web Hosting cPanel Hosting Dedicated Servers Domains
Company
About Documentation Support Center Contact Get Started Call +91 75795 45488
Login
Hosting Panel — cPanel & Billing Console Panel — VPS Management
ALL SYSTEMS OPERATIONAL
WordPress

WordPress Menu Not Showing? Fix It After a Theme Change

Getwebup 6 min read

You switch themes, publish the change, and your navigation bar is just gone. Or it's there but showing the wrong pages, or a stray "Select Menu" dropdown where your main nav used to be. This is one of the most common tickets we get right after a theme change, and it's almost never a lost menu — it's a menu that's no longer assigned anywhere.

Symptom: the menu you built isn't showing up

A few variations of the same underlying issue, all triggered by switching or updating a theme:

  • The header shows no navigation at all, just your logo and empty space.
  • Appearance → Menus still lists your menu with all its items, but the live site doesn't show it.
  • A default "Select a menu" placeholder appears in the header.
  • The menu shows, but with the wrong items — leftover defaults from the new theme.
  • You're on a block theme and can't find "Menus" under Appearance at all.

Cause: menu locations aren't tied to your content

In WordPress, a menu (the list of links you build) and a menu location (the specific spot in a theme's header, footer, or sidebar) are two separate things. Every theme defines its own set of locations with its own internal names — primary, header-menu, main-nav, whatever the theme author picked. When you switch themes, WordPress doesn't know that your old theme's primary location should map to the new theme's header-menu location. Your menu still exists in the database; it's just not plugged into anything the new theme reads.

A few specific causes, in order of how often we see them:

  1. New theme, unassigned locations. The most common one. The theme change wiped the location assignment, not the menu itself.
  2. Block theme (Full Site Editing). Themes like Twenty Twenty-Four don't use the classic Appearance → Menus screen at all — navigation is a Navigation block edited in the Site Editor. If you're used to classic themes, this location alone can make it look like your menu vanished.
  3. Caching serving the old header. You fixed the location assignment, but a page cache (plugin-level or Cloudflare) is still serving the pre-fix HTML.
  4. The menu was actually deleted — rare, but it happens when someone clicks "Delete Menu" while cleaning up, or a bad import/migration drops the nav_menu term entirely.
  5. Child theme or custom code missing register_nav_menus(). If you built a child theme and didn't copy over the location registration from the parent, WordPress has nowhere to assign a menu to.

Fix: reassign the menu to the new theme's locations

1. Check Appearance → Menus first

Go to Appearance → Menus and click the Manage Locations tab. You'll see a table listing every location the current theme defines, each with a dropdown. If your menu is unassigned, every dropdown will read "— Select a menu —". Pick your existing menu from the dropdown next to the location that matches where you want it (usually the one with "header" or "primary" in the name) and click Save Changes.

If you're not sure which location is which, switch to the Edit Menus tab, open your menu, and check the "Menu Settings" box at the bottom — it lists the same locations with checkboxes.

2. On a block theme, use the Site Editor instead

If Appearance → Menus doesn't exist or shows a scaled-down screen, you're on a block theme. Go to Appearance → Editor → Navigation (or open the header template part and click into the Navigation block). Select the block, open the block toolbar, and use the menu icon to switch it from "browse all" or a default list to your actual saved menu. Block themes can still use classic menus stored in the database — the Navigation block just needs to be pointed at one.

3. Clear every layer of cache

Once the location is set correctly, hard-refresh the front end. If it still looks wrong:

  • Clear your caching plugin (WP Super Cache, LiteSpeed Cache, WP Rocket, etc.) from its settings page.
  • If you're on Cloudflare, purge the cache from the dashboard — Caching → Configuration → Purge Everything, or purge just the homepage URL.
  • Check for a page builder's own preview cache (Elementor's "Regenerate CSS" under Tools, for example) if the header is built with a page builder rather than the theme directly.

4. Recover a menu that was actually deleted

If the menu is genuinely gone from Appearance → Menus, don't rebuild it from scratch until you've checked for a backup. In cPanel, JetBackup or your site's backup plugin can usually restore just the wp_posts/wp_terms/wp_term_relationships tables without touching files — that's enough to bring a menu back without a full site restore. If you're comfortable in phpMyAdmin, look in wp_terms and wp_term_taxonomy (taxonomy = nav_menu) for a soft trace of the old menu ID before assuming it's unrecoverable.

No backup with that granularity? Rebuilding a menu from Pages/Posts takes a few minutes if you know your site structure — annoying, but not a disaster.

5. Fix a child theme missing the location registration

If you built a child theme and the parent theme registers custom locations, your child theme's functions.php needs its own register_nav_menus() call using the same location slugs as the parent — WordPress doesn't inherit this automatically in every setup. Check the parent theme's functions.php for something like:

register_nav_menus( array(
    'primary' => __( 'Primary Menu', 'theme-slug' ),
    'footer'  => __( 'Footer Menu', 'theme-slug' ),
) );

Copy the matching slugs (primary, footer) into your child theme if they've gone missing, then the location will reappear under Manage Locations.

6. Confirm it from the command line

If you have SSH/WP-CLI access, this is faster than clicking through screens:

wp menu list
wp menu location list
wp menu location assign <menu-name-or-id> <location-slug>

The first two commands show you exactly what menus exist and what locations the active theme supports — useful for confirming there's a genuine mismatch rather than guessing.

Prevention: don't let the next theme change do this again

  • Test theme changes on staging first. cPanel's WordPress Toolkit can clone your site to a staging copy in a couple of clicks — switch themes there and fix menu locations before anything touches the live site.
  • Note your current location assignments before switching themes, so you know what to re-map afterward instead of guessing.
  • Keep child theme location slugs in sync with the parent theme, especially after parent theme updates that might rename or add locations.
  • Purge caches as a standard last step of any theme change, not just when something looks broken.

Most of the time, "my menu disappeared" turns out to be a one-dropdown fix once you know where WordPress actually stores that connection. If you've gone through all of the above and the menu still won't show, it's worth checking for a plugin conflict — deactivate menu-related plugins (mega menu builders, conditional menu plugins) one at a time and see if the location dropdown behaves normally again.

Frequently asked questions

Why did my menu disappear after a theme update, not even a theme switch?

Some theme updates rename or restructure their menu location slugs. If the location your menu was assigned to no longer exists under that name, the assignment breaks the same way it would with a full theme switch. Check Appearance > Menus > Manage Locations and reassign it.

I'm on a block theme and there's no Appearance > Menus screen. Where do I fix this?

Block (Full Site Editing) themes use a Navigation block instead of the classic menu screen. Go to Appearance > Editor > Navigation, select the block, and point it at your saved menu from the block toolbar. The menu itself is often still saved in the database even though the classic screen is hidden.

Can I recover a deleted menu without restoring my whole site?

Usually yes. A table-level backup restore (JetBackup or your backup plugin's database option) covering wp_terms, wp_term_taxonomy, and wp_term_relationships can bring back a deleted menu without touching your files or other content.

I reassigned the menu but the live site still shows the old one. What's wrong?

That's almost always caching. Clear your caching plugin's cache, purge Cloudflare if you're using it, and check whether a page builder has its own CSS/preview cache. Hard-refresh with cache disabled in dev tools to confirm it's actually a cache issue before troubleshooting further.

My child theme has no menu locations at all. How do I fix that?

Your child theme's functions.php needs its own register_nav_menus() call using the same location slugs the parent theme defines. Check the parent theme's functions.php for its register_nav_menus() block and copy the matching slugs into your child theme.

#wordpress-menu #navigation-menu #theme-switch #wp-cli #block-theme #wordpress-troubleshooting

Keep reading

Chat with Support