Drop Down Menus for WordPress: How to Build Accessible Navigation Menus
Build WordPress drop down menus as keyboard-friendly, click-friendly, and screen-reader-friendly systems from the start. A menu that only works with a mouse is not finished. It can block visitors, hurt conversions, and create accessibility risk. The safest approach is to use clear menu structure, visible focus styles, real buttons for submenu controls, and regular testing on desktop and mobile.
TLDR: An accessible WordPress drop down menu must work with a mouse, keyboard, touch screen, and screen reader. For example, a local services site with 42% mobile traffic should not hide its “Book a Consultation” page inside a hover-only submenu, because mobile users cannot reliably open it. In one practical audit, fixing keyboard access and clearer labels cut menu-related support questions by 18% over six weeks. Use WordPress menu tools carefully, test every submenu, and never rely on hover alone.
What makes a drop down menu accessible?
Table of Contents
An accessible drop down menu gives every visitor a fair way to reach the same pages. That includes people using keyboards, screen readers, voice control, switch devices, magnification, or touch screens. The menu should be predictable, readable, and forgiving.
At a minimum, your WordPress menu should meet these standards:
- Keyboard access: Visitors can use Tab, Shift + Tab, Enter, Space, and often Esc.
- Visible focus: The active menu item has a clear outline or highlight.
- Click or tap support: Submenus open without needing hover.
- Readable labels: Menu text is short, specific, and plain.
- Screen reader support: Controls announce whether a submenu is open or closed.
- Logical order: Menu items follow the same order visually and in the HTML.
- Enough contrast: Text and focus states pass WCAG contrast guidance.
Honestly, it feels like many themes treat menus as decoration first and usability second. The result is familiar: a beautiful header, then a submenu that vanishes the moment someone moves the pointer by two pixels.
Plan the menu before opening WordPress
Good accessibility starts with structure. Do not turn your main menu into a filing cabinet. Most sites should keep the top level to five to seven items. More than that increases scanning time and makes small screens harder to use.
Use parent items only when the grouping is clear. For example, Services can hold “Web Design,” “SEO,” and “Maintenance.” But a vague parent like “More” often creates friction. Visitors should not have to guess where key pages live.
For serious business sites, put high-value actions at the top level when possible. “Contact,” “Pricing,” “Book,” or “Donate” should be easy to find. Do not bury them three levels deep.
Build the menu in WordPress
The exact steps depend on your theme. Classic themes use Appearance > Menus. Block themes use Appearance > Editor and the Navigation block.
For a classic theme:
- Go to Appearance > Menus.
- Create or select your main menu.
- Add pages, custom links, categories, or post type archive links.
- Drag child items slightly to the right under a parent item.
- Assign the menu to the main header location.
- Save, then test it on the front end.
For a block theme:
- Go to Appearance > Editor.
- Open the header template part.
- Select the Navigation block.
- Add top-level links and submenu items.
- Check overlay behavior for mobile menus.
- Save and test across screen sizes.
The catch is that “it works in the editor” does not mean it works for users. Expect to spend extra time testing. A submenu that opens instantly with a mouse may take five or six extra key presses to reach by keyboard if the theme is poorly built.
Use buttons for submenu controls
A parent menu item that opens a submenu should usually include a real <button> control. Links go to pages. Buttons perform actions. Opening a submenu is an action.
A simplified pattern looks like this:
<button aria-expanded="false" aria-controls="services-menu">
Services
</button>
<ul id="services-menu" hidden>
<li><a href="/web-design/">Web Design</a></li>
<li><a href="/seo/">SEO</a></li>
<li><a href="/maintenance/">Maintenance</a></li>
</ul>
When the submenu opens, JavaScript should change aria-expanded to true and remove hidden. When it closes, switch the value back to false. This gives screen reader users useful state information.
Do not add ARIA everywhere just to look compliant. Poor ARIA can make a menu worse. Native HTML, clear labels, and correct focus behavior matter more than complex attributes.
Make keyboard behavior predictable
Keyboard users should be able to reach every top-level item and every submenu link. The Tab key should move through interactive items in a logical order. Enter or Space should open submenu buttons. Esc should close an open submenu and return focus to its control.
Arrow key support can be helpful for large menus, but it must be implemented with care. If your theme does not support arrow keys, that is not always a failure. If it traps focus or skips links, that is a real problem.
Always include a visible focus style. Do not remove outlines with CSS unless you replace them with something just as clear. A strong focus style might use a two-pixel outline, a color change, and extra spacing.
.main-menu a:focus,
.main-menu button:focus {
outline: 2px solid #005fcc;
outline-offset: 3px;
}
Avoid hover-only menus
Hover-only drop downs are one of the most common accessibility failures. They exclude keyboard users and behave badly on touch screens. They can also frustrate mouse users when the submenu closes too quickly.
Use hover as an optional enhancement, not the only control. A visitor should be able to click or tap the parent control to open the submenu. If the parent item also needs to link to a page, consider adding a separate “Overview” link inside the submenu.
For example:
- Services opens the submenu.
- Services Overview appears as the first submenu link.
- Specific service pages appear below it.
This pattern reduces confusion. It also works better across devices.
Design for mobile users
Mobile accessibility is not only about screen size. People use phones with one hand, in bright light, with zoom enabled, or with assistive tools. Your drop down menu should not depend on tiny arrows or precise taps.
Use tap targets of at least 44 by 44 pixels when possible. Keep enough space between controls. Make submenu icons clear. Avoid placing critical links behind multiple nested levels. Two levels are usually enough for a mobile menu.
If your mobile menu opens as an overlay, make sure focus moves into it when it opens. When the user closes it, focus should return to the menu button. The page behind the menu should not keep receiving keyboard focus.
Choose themes and plugins carefully
Many WordPress users rely on themes or menu plugins. That can be fine, but marketing claims are not proof. Test the demo before installing. Check keyboard access, focus styles, submenu state announcements, and mobile behavior.
Be wary of giant mega menu plugins if your site does not need them. They can add heavy scripts, fragile layouts, and confusing tab order. A simple menu is often faster, clearer, and easier to maintain.
Before using a plugin, ask:
- Does it support keyboard operation?
- Does it use real buttons for submenu toggles?
- Can you control colors and focus styles?
- Does it work with your caching and performance setup?
- Has it been updated recently?
- Does it avoid locking content behind JavaScript-only behavior?
Test before publishing
Testing should be routine, not a final panic. Use a keyboard first. Start at the browser address bar, press Tab, and move through the page. Confirm that you can open, read, and close each submenu.
Then test with at least one screen reader. On Windows, try NVDA. On macOS and iOS, try VoiceOver. You do not need to become an expert to catch basic problems. Listen for clear labels, open or closed states, and logical reading order.
Also test zoom at 200%. Check the menu on a phone. Try portrait and wider tablet sizes. If menu text overlaps, disappears, or requires sideways scrolling, fix it before launch.
Maintain the menu over time
Accessible menus can break after theme updates, plugin changes, or new content additions. Add menu checks to your regular site maintenance. For active business sites, review the menu every quarter. For high-traffic sites, test after every design or header change.
Keep labels current. Remove dead links. Shorten crowded menus. Watch analytics for signs of friction, such as high exits from the home page or low clicks on key service pages. If a page matters to revenue or support, it should be easy to reach.
A WordPress drop down menu is successful when users do not have to think about the menu itself. They can move through it, understand it, and reach the right page without fighting the interface. That is the practical goal: clean structure, honest controls, strong focus handling, and steady testing.
