A WordPress menu is a set of navigation links that guide visitors to key pages on your site. WordPress powers 43.5% of all websites on the internet (W3Techs, 2025), and every one of those sites relies on menus for navigation. You can edit menus in WordPress through Appearance → Menus (classic themes) or Appearance → Editor → Navigation (block themes). The built-in editor lets you add, remove, reorder, and nest menu items without writing any code. According to Baymard Institute research (2025), 58% of desktop sites and 67% of mobile sites have mediocre or poor navigation implementation — making proper menu editing one of the highest-impact changes you can make to your WordPress site.

WordPress has supported custom menus since version 3.0 (June 2010). Every theme registered with register_nav_menus() exposes at least one menu location. As of WordPress 6.7, you have two menu editing interfaces depending on your theme type: the classic Appearance → Menus drag-and-drop editor for classic themes, and the Navigation block in the Site Editor for block themes.

Navigation UX Key Statistics

Statistic Value Source
Desktop sites with poor navigation 58% Baymard Institute, 2025
Mobile sites with poor navigation 67% Baymard Institute, 2025
First-time visitors who scan navigation first 38% Missouri S&T eye-tracking study
Users who leave due to poor navigation 61% Forrester Research
Sites failing to indicate current scope in nav 95% Baymard Institute, 2025
Task-completion time increase per nesting level ~25% Nielsen Norman Group
Navigation time reduction with sticky menus 22% Hyper Island / Smashing Magazine, 2013

WordPress Menu Editing Quick Reference

Task Where to Do It Time Required Source / Notes
Add/remove menu items Appearance → Menus (classic) or Site Editor (block) 1-2 minutes WordPress core feature since v3.0
Reorder menu items Drag and drop in menu editor 30 seconds Built-in, no plugin needed
Create dropdown/submenu Drag item to the right under a parent 1 minute Max 2 levels recommended (NNG)
Add CSS classes to items Screen Options → enable CSS Classes 2 minutes Hidden by default in WP menu editor
Change menu link text Click item → edit Navigation Label 30 seconds Independent of page title
Set menu location Menu Settings checkbox at bottom of editor 30 seconds Locations defined by theme
Add custom link Custom Links panel → enter URL + label 1 minute Supports external URLs
Style menu visually Menu plugin (e.g., Responsive Menu) or custom CSS 5-15 minutes Core offers no visual styling options

How to Edit a WordPress Menu (Classic Themes)

The classic menu editor is available in any WordPress theme that is not a full site editing (block) theme. This includes the majority of themes in use today — themes like Astra, GeneratePress, OceanWP, and any theme built before 2022.

Step 1: Open the menu editor

Log in to your WordPress dashboard. Go to Appearance → Menus. If you do not see “Menus” under Appearance, you are using a block theme — skip to the block theme section below.

Step 2: Select or create a menu

If you already have a menu, select it from the “Select a menu to edit” dropdown and click “Select.” To create a new one, click “Create a new menu,” enter a name (e.g., “Main Navigation”), and click Create Menu.

Step 3: Add items to your menu

On the left side panel, you will see four item sources:

Source What It Adds When to Use
Pages Links to published WordPress pages Most common — About, Contact, Services, etc.
Posts Links to individual blog posts Highlight key articles or cornerstone content
Custom Links Any URL with a custom label External links, anchor links, tel: or mailto: links
Categories Links to category archive pages Blog navigation, product categories

Check the items you want, then click “Add to Menu.” They appear as a flat list on the right.

Step 4: Reorder and nest items

Click and drag items up or down to reorder them. To create a dropdown (submenu), drag an item slightly to the right underneath its parent. It will show a “sub item” label when properly nested. Nielsen Norman Group research recommends limiting dropdown depth to two levels — each additional level increases task-completion time by approximately 25%.

Step 5: Edit individual item settings

Click the arrow on any menu item to expand its settings:

  • Navigation Label — The text visitors see. This is independent of the page title, so you can use shorter labels like “Blog” instead of “Our Company Blog.”
  • Title Attribute — Tooltip text shown on hover. Useful for accessibility.
  • Open link in a new tab — Check this for external links.

To see additional fields, click “Screen Options” at the top-right of the page and enable:
CSS Classes — Add custom classes to individual items for targeted styling
Link Relationship (XFN) — Add rel attributes (e.g., nofollow for external links)
Description — Some themes display a short description below the menu item label

Step 6: Assign a menu location and save

Under “Menu Settings” at the bottom, check the location where this menu should appear (e.g., Primary Menu, Footer Menu). Each theme defines its own locations. Click “Save Menu.”

How to Edit a WordPress Menu (Block Themes)

Block themes in WordPress — including Twenty Twenty-Five, Flavor, and Flavor Pro — replace the classic Appearance → Menus screen with the Site Editor’s Navigation block. This WYSIWYG editor lets you edit menu items, customize typography and colors, and preview changes in real time without writing CSS. Block themes represent a growing share of the WordPress ecosystem, with the WordPress.org theme directory listing over 1,200 block themes as of early 2026. If your theme is a block theme, the Appearance → Menus option will not appear — you will see Appearance → Editor instead.

Step 1: Open the Site Editor

Go to Appearance → Editor. This opens the full site editing interface.

Step 2: Find the Navigation block

Click on your site’s header area (or wherever your navigation appears). Click the Navigation block to select it. You can also find it through the block inserter by searching for “Navigation.”

Step 3: Edit menu items

Click on any menu item to edit its label or link. Use the “+” button to add new items — you can add pages, posts, custom links, categories, or even sub-menus. To create a dropdown, add a “Submenu” block inside an existing menu item.

Step 4: Customize appearance

With the Navigation block selected, the right sidebar shows style options:
– Typography (font, size, weight)
– Colors (text, background, hover states)
– Layout (horizontal, vertical, flex settings)
– Spacing (padding, margins between items)

Step 5: Save changes

Click the “Save” button in the top-right corner. Changes apply site-wide since block themes use global templates.

Classic Menu Editor vs Site Editor: Comparison

Feature Classic Menu Editor Site Editor (Block Themes)
Access path Appearance → Menus Appearance → Editor
Visual preview No (blind editing) Yes (real-time WYSIWYG)
Drag-and-drop reordering Yes Yes (block-based)
Dropdown/submenu support Drag to indent Add Submenu block
Custom CSS classes on items Yes (via Screen Options) Yes (via Advanced panel)
Typography control No (requires custom CSS) Yes (built-in)
Color control No (requires custom CSS) Yes (built-in)
Multiple menu locations Theme-defined checkboxes Place Navigation blocks anywhere
Mega menu support Not built-in Not built-in
Plugin compatibility Excellent (most menu plugins) Limited (few plugins support FSE)

The Site Editor offers more built-in styling power, but plugin compatibility is still stronger with the classic editor. If you need advanced features like mega menus, animations, or conditional menu items, a dedicated menu plugin works best with the classic menu system.

7 Ways to Customize Your WordPress Menu Beyond the Basics

WordPress menu customization beyond basic structure — such as adding icons, changing colors, creating sticky navigation, or showing different menus by device — requires either custom CSS or a dedicated menu plugin. The built-in WordPress menu editor provides zero visual styling controls: no color pickers, no font selectors, no animation settings. Below are the seven most requested menu customizations and how to implement each one.

1. Add icons to menu items

WordPress does not support menu icons natively. You can add them via CSS classes (enable in Screen Options, then add a class like menu-icon-home and target it in your stylesheet) or use a plugin. Responsive Menu includes a built-in icon library where you pick icons visually without writing CSS.

2. Change menu colors and fonts

In classic themes, you need custom CSS:

.main-navigation a {
  color: #333333;
  font-family: 'Inter', sans-serif;
  font-size: 16px;
}
.main-navigation a:hover {
  color: #0073aa;
}

In block themes, select the Navigation block and use the sidebar style panel. With Responsive Menu, you get a visual color picker and font selector — no CSS needed.

3. Highlight a specific menu item (CTA button)

To turn a menu item into a button (common for “Get Started” or “Sign Up” links):

  1. Open Screen Options and enable CSS Classes
  2. Click the menu item and add a class like menu-cta-button
  3. Add CSS to style it:
.menu-cta-button a {
  background-color: #0073aa;
  color: #ffffff;
  padding: 8px 20px;
  border-radius: 4px;
}

4. Make the menu sticky (fixed on scroll)

A sticky menu stays visible as users scroll down. A usability study published by Hyper Island and featured in Smashing Magazine (2013) found that sticky navigation reduced average navigation time by 22% on content-heavy sites. You can achieve this with CSS position: sticky on the header, or use a plugin like Responsive Menu which has a built-in sticky option with customizable scroll offset.

5. Show different menus on mobile vs desktop

WordPress supports multiple menu locations, but showing entirely different menus by device requires either custom code or a plugin. Responsive Menu lets you assign different WordPress menus to desktop and mobile views independently, so you can show a simplified menu on phones with fewer items.

6. Add conditional menu items

Sometimes you want menu items that appear only for logged-in users, specific user roles, or on certain pages. WordPress core does not support this. Plugins like “If Menu” or “Nav Menu Roles” add visibility conditions to each menu item.

7. Add search to the menu

Adding a search bar inside the navigation keeps it accessible from every page. In block themes, insert a Search block inside the Navigation block. In classic themes, use Responsive Menu’s built-in search integration or add a search widget to a menu widget area.

Common WordPress Menu Editing Mistakes

Mistake Impact Fix
Too many top-level items (8+) 38% of first-time visitors scan navigation first — cluttered menus increase bounce rate Group related pages under 5-7 parent items
Using page titles as menu labels Labels like “Our Comprehensive Service Offerings” waste horizontal space Shorten to 1-2 words: “Services”
Not assigning a menu location Menu exists but does not appear on the site Check a location box in Menu Settings
Forgetting to save after editing All changes are lost Click “Save Menu” — there is no auto-save
Linking to draft or private pages Visitors get 404 errors Only add published pages to menus
Ignoring mobile menu behavior 67% of mobile sites have poor navigation (Baymard, 2025) Test your menu on mobile or use a responsive menu plugin
Deep nesting (3+ levels) Each level adds ~25% to task-completion time (NNG) Limit to 2 levels; use mega menu for complex sites

When to Use a Menu Plugin Instead

A WordPress menu plugin becomes necessary when you need visual customization, animations, mega menus, or conditional visibility — features absent from the built-in editor. The default WordPress menu editor handles structural tasks (adding, removing, and reordering items) but provides no controls for colors, fonts, icons, or mobile-specific behavior. According to WordPress.org plugin directory data, over 2 million active WordPress sites use a dedicated menu plugin. If you need any of the following, a plugin saves significant time compared to custom CSS:

Need Built-in Editor Responsive Menu (Free) Responsive Menu Pro
Add/remove/reorder items Yes Yes Yes
Dropdown submenus Yes (styling is theme-dependent) Yes (with animations) Yes (fully customizable)
Custom colors and fonts Requires CSS Visual editor Visual editor + advanced
Menu icons Requires CSS + icon font Built-in icon library Built-in + custom SVG
Sticky menu Requires CSS/JS One-click toggle One-click + scroll offset
Hamburger menu on mobile Theme-dependent Automatic Fully customizable trigger
Mega menu panels Not supported Not supported Full mega menu builder
Conditional visibility Not supported Not supported Show/hide by device, role, page
WCAG 2.2 accessibility Theme-dependent Built-in ARIA labels Full compliance + keyboard nav

Responsive Menu is used on over 100,000 WordPress sites and works with any classic theme. It reads your existing WordPress menu structure, so you do not need to rebuild your menu — just activate the plugin and customize the appearance.

Frequently Asked Questions

How do I edit the menu in WordPress?

Go to Appearance → Menus in your WordPress dashboard if you are using a classic theme. For block themes, go to Appearance → Editor and click on the Navigation block. In both editors, you can add, remove, reorder, and nest menu items. The classic editor uses drag-and-drop; the Site Editor uses block controls. Changes take effect after you click “Save Menu” (classic) or “Save” (Site Editor). WordPress has supported custom menus since version 3.0, released in June 2010.

Why can’t I see the Menus option under Appearance?

If Appearance → Menus is missing, you are most likely using a block theme (like Twenty Twenty-Five). Block themes replace the classic Menus screen with the Site Editor. Go to Appearance → Editor instead, and look for the Navigation block in your header template. If you are using a classic theme and still do not see Menus, your theme may not have registered any menu locations — check with the theme developer or switch to a theme that supports register_nav_menus().

Can I have different menus on different pages?

WordPress core does not support per-page menus natively. You can create multiple menus and assign them to different locations (e.g., header vs footer), but showing different primary menus on specific pages requires a plugin like “Conditional Menus” or custom code using the wp_nav_menu_args filter. In block themes, you can use template-level editing to place different Navigation blocks on different templates.

How do I add a custom link to my WordPress menu?

In the classic menu editor, expand the “Custom Links” panel on the left side. Enter the full URL (including https://) and a link label, then click “Add to Menu.” This is how you add external links, anchor links (e.g., #pricing), phone links (tel:+1234567890), or email links (mailto:info@example.com). Custom links are also useful for creating placeholder parent items — enter # as the URL so the parent is not clickable.

How do I add CSS classes to WordPress menu items?

CSS classes are hidden by default in the WordPress menu editor. To enable them, click “Screen Options” at the top-right corner of the Appearance → Menus page, then check the “CSS Classes” box. After enabling, expand any menu item to see a new “CSS Classes (optional)” field where you can add one or more class names separated by spaces. This lets you target individual items with custom CSS for unique styling — for example, adding a menu-cta-button class to turn a menu item into a call-to-action button.

Does editing the menu affect my site’s SEO?

Yes, menu structure directly impacts SEO in two ways. First, menus generate internal links — pages linked from the main navigation receive more link equity and are crawled more frequently by search engines. Removing a page from the menu reduces its internal link count, which can lower its ranking. Second, navigation structure helps search engines understand your site hierarchy. Google’s documentation recommends using a clear, logical navigation structure so that every page is reachable within 3 clicks from the homepage. Changing menu structure does not cause immediate ranking changes, but affects crawling and indexing over weeks.