Skip to main content
Blog|
How-to guides

How to add and manage menus in WordPress

|
Apr 12, 2026|12 min read
HOW-TO GUIDESHow to add and manage menus inWordPressHOSTNEYhostney.comApril 12, 2026

Menus are how visitors move through your site. They are also one of the places where WordPress quietly changed how things work: the old Appearance > Menus screen still exists for most themes, but block themes with Full Site Editing use a completely different system. Depending on which theme you run, you will either edit menus with drag-and-drop items in the classic Menus screen, or build them as Navigation blocks inside the Site Editor. This guide covers both, plus everything in between: adding pages, creating dropdowns, adding categories, setting menu locations, and the usual problems that come up when menus do not behave.

Classic menus (Appearance > Menus)#

If your theme uses the classic editor, or if it is a block theme that still exposes the Menus screen, go to Appearance > Menus in the admin. This is the original WordPress menu interface and it is still the most flexible way to build a menu on themes that support it.

Creating a menu

  1. Open Appearance > Menus.
  2. If no menus exist yet, you will see a form to create one. Enter a menu name (this is internal – visitors never see it) and click Create Menu.
  3. A left-side panel appears with sections for Pages, Posts, Custom Links, and Categories. Each one lets you add items to the current menu.
  4. Check the pages, posts, categories, or custom links you want, then click Add to Menu.
  5. Drag items to reorder them. The top-most item in the list is the leftmost item in the menu (on most themes).
  6. Click Save Menu.

A menu does not appear anywhere on the site until you assign it to a menu location. The location list is under the menu structure panel, usually labeled “Menu Settings” or “Display location.” Every theme declares its own locations – common ones are Primary, Footer, and Mobile.

Adding pages to a menu

Pages are the most common menu items. In the Pages section of the left panel:

  1. The most recent pages appear by default.
  2. Click View All to see every published page.
  3. Search for specific pages by name if you have many.
  4. Check the ones you want, click Add to Menu.
  5. Drag them into the order you want.

If you created a new page after you built the menu, it will not automatically appear in the menu – you have to add it manually. This is the right behavior for most cases (not every page belongs in the navigation) but catches people off-guard when they publish a page and expect it to show up in the header.

Adding categories to a menu

Categories are under the Categories section of the same left panel. They often get hidden by default – click Screen Options at the top right and check “Categories” if the section is missing. Then:

  1. Open the Categories section.
  2. Check the categories you want.
  3. Click Add to Menu.

Categories in a menu link to that category’s archive page: a list of all posts in that category. This is useful for blog sites where visitors want to filter by topic. Note that when a category has zero published posts, the archive page will 404 on most themes, so do not add empty categories to menus.

Custom links

Custom links let you add menu items that go to URLs WordPress does not control: external sites, anchor links within a page, or pages that are not technically managed by WordPress. Under Custom Links:

  1. Enter the URL (absolute or relative – /about/ or https://www.example.com/ ).
  2. Enter the link text.
  3. Click Add to Menu.

Custom links are how you add things like “Shop” that points to a subdomain, or “Contact” that scrolls to #contact on the homepage, or a link to your documentation hosted elsewhere. They are also how you control menu items you do not want WordPress to auto-generate. If any of your menu items point to your own domain, make sure they match the domain you have configured in WordPress – a mismatch can cause mixed-content warnings or broken links after a domain change.

Menu locations are slots the theme exposes – places where a menu can appear. When you check “Primary” under Menu Settings, WordPress tells the theme “this menu belongs in the Primary slot,” and the theme renders it wherever its template says Primary goes. The menu in the header is also where visitors expect to find your homepage link – make sure your homepage is configured correctly so the “Home” menu item actually goes where you want.

Locations are defined by the theme in PHP ( register_nav_menus() ), not by you. Common locations:

  • Primary – the main navigation, usually in the header.
  • Secondary or Top Bar – a smaller menu above the main navigation, often for utility links (login, account, cart).
  • Footer – menu in the site footer, often used for legal pages (privacy, terms) and support links.
  • Mobile – on some themes, a separate menu shown only on mobile devices.
  • Social – menu items that render as icons; the theme maps the URL to a social icon.

The same menu can be assigned to multiple locations. You can also leave a location empty if you do not want any menu there – the theme typically hides the location when no menu is assigned.

Switching themes usually breaks menu locations. The new theme has its own locations (Primary, Footer, etc.), and the old theme’s assignments do not carry over. After switching themes, reassign your menus under Appearance > Menus or through the Customizer.

Creating dropdown menus#

Dropdowns (also called submenus or nested menus) are how you group related items under a parent. “Shop” with subitems “Men,” “Women,” “Kids” is a dropdown. WordPress supports nested menus on themes that support them – almost all themes do, though the depth varies.

To create a dropdown:

  1. Add all the items you want (parent and children) to the menu.
  2. Drag each child item to the right, indenting it underneath the parent.
  3. The indentation is the visual cue: items at the top level are the main nav, items indented once are in the first dropdown, items indented twice are in a sub-dropdown.
  4. Save the menu.

On the live site, hovering the parent reveals the children. On mobile, parents typically become tap-to-expand. The behavior depends on the theme’s CSS and JavaScript.

Dropdowns that do not appear

If you set up a nested menu and the dropdown does not show on the site, these are the usual causes:

  1. The theme does not render nested menus. Minimalist themes sometimes flatten everything. Check the theme’s documentation or try a different theme temporarily to isolate the issue.
  2. A CSS conflict is hiding it. A plugin or custom CSS may have set display: none on .sub-menu elements. Inspect the dropdown in browser dev tools with the parent hovered – if the submenu is in the HTML but hidden, it is a CSS problem, not a menu setup problem.
  3. The menu location does not support dropdowns. Some footer or social menu locations ignore nesting. Use the Primary location if you want nested menus.
  4. Cache is serving an old version. Clear your site cache after editing menus – otherwise visitors see yesterday’s menu. The Hostney Cache plugin automatically purges after menu changes, but other caching plugins may need a manual clear.

Mega menus

Mega menus are wide dropdowns that show multiple columns of items, often with images or descriptions. Core WordPress does not support mega menus natively – you need a plugin or a theme that includes the feature. Common options:

  • Max Mega Menu (plugin) – adds a builder interface to the native Menus screen.
  • UberMenu (premium) – more advanced styling options.
  • Divi Builder, Elementor Pro – both have mega menu modules in their Pro versions.

If you need a mega menu, a dedicated plugin is usually better than a theme-bundled one because it survives theme switches.

Block themes and the Navigation block#

Block themes (Twenty Twenty-Four, Twenty Twenty-Five, and any theme declaring full block template support) do not use the classic Menus screen. Instead, menus are built as Navigation blocks inside the Site Editor.

To edit navigation on a block theme:

  1. Go to Appearance > Editor.
  2. Open the template that contains navigation (usually the Header template).
  3. Click the Navigation block.
  4. Add, remove, or reorder items in the block’s sidebar controls.
  5. Save.

Differences from classic menus:

  • Menus are blocks, not separate entities. You cannot have “a menu” that lives in the database independently – the menu is part of the template.
  • Reusable Navigation blocks. You can save a Navigation block as synced (previously called “reusable”) so multiple templates share the same menu.
  • No “locations” concept. Wherever the Navigation block is placed in a template is where it renders. To change location, move the block in the template.
  • No Menus admin screen on pure block themes. Some block themes keep the Menus screen as a fallback, but editing through the Site Editor is the intended workflow.

Adding items in the Navigation block works similarly to classic menus: pick from pages, posts, categories, or add custom links. The block editor interface is newer and has fewer features than the classic screen (for example, reordering is less intuitive), but it integrates directly with the block-based template system.

Classic themes vs block themes

You can tell which one your theme is by going to Appearance > Menus. If the screen exists, you have classic menus. If the admin redirects you to the Site Editor or says “menus are not available,” you have a block theme.

Some themes do both: they declare classic menu locations and also support Navigation blocks. On these themes, you can use either approach, but pick one and stick with it. Mixing them gets confusing fast.

Customizing menus in the Customizer#

On classic themes, Appearance > Customize includes a Menus section that works almost identically to Appearance > Menus, but with a live preview. Changes appear in the preview pane as you make them, and you click Publish when ready.

The Customizer version is convenient for small tweaks but the standalone Menus screen is better for building menus from scratch – more screen real estate, clearer drag-and-drop, and easier to manage multiple menus.

Styling menus#

The Menus screen sets which items appear and what they link to. The visual style – colors, fonts, spacing, hover states, dropdown animations – is controlled by the theme’s CSS. Options for styling:

  • Use the theme’s built-in Customizer settings if available. Most themes expose header background color, link color, and sometimes hover color.
  • Add CSS in the Additional CSS panel (Customize > Additional CSS) for changes the theme does not support natively.
  • Switch to a different theme if the menu style is fundamentally wrong for your brand. The menu items themselves survive a theme change, but you will need to reassign menu locations after switching.

Heavy menu customization (sticky headers, animated transitions, transparent-on-homepage only) is usually done by modifying the theme or using a page builder that overrides the theme’s header. These approaches affect the whole header, not just the menu, so plan them as header redesigns rather than menu edits.

You edit the menu, save it, refresh the site, and the old version is still showing. Almost always a caching issue:

  1. Page cache. If your hosting has a built-in cache or you use a plugin (WP Rocket, W3 Total Cache, LiteSpeed Cache), the page with the menu may still be cached. Clear the cache to see the new version. The Hostney Cache plugin purges affected URLs automatically when menus change, so this step is only needed on other hosts.
  2. Browser cache. Your browser may be caching CSS or the HTML. Hard-refresh (Ctrl+Shift+R on Windows/Linux, Cmd+Shift+R on Mac) or test in an incognito window.
  3. CDN cache. If you use Cloudflare or another CDN, the cached edge response may still be the old menu. Purge the CDN cache too.

Caching is involved in many WordPress display issues beyond menus. If caching is a recurring problem across your site, it is worth understanding what is cached and where – from the browser to the CDN to the origin server. The general WordPress speed guide covers the full caching stack.

When menu changes do not save#

Occasionally the Save Menu button appears to succeed but your changes do not persist. Causes:

  • PHP memory limit too low. Large menus (50+ items) can exceed the PHP memory limit on small hosting plans. You will see a white screen or an incomplete save. Increase the memory limit or reduce the menu size.
  • Request size limit. Very large menus with many custom fields hit the server’s max post size. Check for 413 or 500 errors in the browser dev tools Network tab after clicking Save.
  • Plugin conflict. A plugin hooking into menu save can silently fail. Disable plugins one at a time to identify the culprit.
  • Corrupted menu data. Rare, but it happens – usually from a failed import or a database issue. Create a new menu from scratch and reassign items.

Deleting a menu#

To delete a menu entirely, go to Appearance > Menus, select the menu from the “Select a menu to edit” dropdown, and click Delete Menu at the bottom. The menu items are removed, but the pages, posts, and categories they pointed to are unaffected – deleting a menu does not delete the content it linked to.

If you only want to remove the menu from a location without deleting it, uncheck the location under Menu Settings and save. The menu still exists and can be reassigned later.

Do not confuse the site menu with the admin bar – the black bar at the top of the page when you are logged in. The admin bar is configured under Users > Profile (or by plugins) and is separate from WordPress menus. It shows only to logged-in users and does not affect public navigation.

Planning menus that work#

A few habits that make menu maintenance easier over time:

  • Keep top-level items under 7. Long menus get truncated on mobile and are harder to scan on desktop. Group related items under a dropdown instead of adding more top-level entries.
  • Use consistent naming. “About” and “About Us” on the same site creates decision fatigue for visitors. Pick one style.
  • Avoid menu items that link to external sites without warning. If you must, make the link text clear (“View on GitHub”) or open in a new tab (set the “Open link in a new tab” option in the item’s advanced settings).
  • Reserve the footer menu for legal and support. Privacy, terms, contact, sitemap. Not your main navigation – visitors do not scroll to the footer to find your product pages.

Menus are one of the few parts of WordPress where the old and new systems (classic menus and Navigation blocks) coexist, which makes documentation and help articles occasionally contradict each other. If a tutorial tells you to go to Appearance > Menus and your admin does not have that screen, you are on a block theme – look for the Navigation block in the Site Editor instead.

Related articles