Skip to content

Admin bar flyout: non-link items unreachable by keyboard #264

Description

@josephfusco

Live-tested with Playwright (headless Chromium, keyboard events, no code-only inference). Part of the #138 audit.

The flyout opens correctly via Enter/Space on the toolbar node. Once open, Tab skips every non-link item (self, "On this page"/"Elsewhere" headers, users without a discoverable screen) and jumps straight to the first real <a> in the flyout.

Before Tab (flyout open, focus on the toolbar node itself):

flyout open

After one Tab press — focus jumps past "On this page," "admin (you)," "Elsewhere," and "User B" straight to "View online users":

tab skips to bottom link

A keyboard-only user has no way to read who is online or on which screen; they can only ever reach the one link at the bottom.

Cause: includes/admin-bar.php builds child nodes with href => false for anything without a real destination (self, per-user "here" entries, group headers). WP_Admin_Bar renders those as <div class="ab-item ab-empty-item"> (wp-includes/class-wp-admin-bar.php), which is never in the tab order, unlike <a href>.

Fix direction: give informational-only flyout items a tabindex="-1" (or similar) plus a way for a keyboard user to actually read them in order — e.g. role="none" text nodes read via a wrapping aria-label/aria-describedby on the parent, or restructure so Tab moves through every item in visual order regardless of whether it links anywhere.

Use of AI Tools

AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Sonnet 5
Used for: Assisting with investigation, live browser verification, and drafting

Metadata

Metadata

Assignees

Labels

[Area] Admin UIIssues for the admin UI integrations[Type] BugAn existing feature is brokenjavascriptPull requests that update javascript code

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions