Skip to main content

ARIA & keyboard

Custom control is missing a required state

WCAG 2.2 success criterion 4.1.2 Name, Role, Value (Level A)

WCAG 2.2
4.1.2 Name, Role, Value
Level
A
Default severity
Error
Available in
Free

Updated for Lumtera 1.3.0 and Lumtera Pro 1.2.0.

Why does it matter?

WCAG 4.1.2 asks that assistive technology can read a control's state; WAI-ARIA requires this state for this role, and without it people cannot tell, for example, whether a custom checkbox is ticked. A script may add it when the page runs, so check the live page before changing anything.

Who it affects: Screen reader and keyboard users, who depend on ARIA and focus order being correct to understand and operate the page.

What does Lumtera flag?

A role that WAI-ARIA says must carry a state, such as role="checkbox" with no aria-checked. On raw content this is Needs review, because a script may add the state later; on the running page's snapshot in review mode it is an error.

Check ID aria-required-attr — use it to filter the content report or with wp lumtera issues --rule.

How do I fix it in WordPress?

Add the missing attribute and keep it up to date from the script that runs the control, for example aria-checked="false" that becomes "true" when ticked. Better still, use a native control (a checkbox input or a button), which keeps its own state.

Example

Flagged
<div role="checkbox" tabindex="0">Subscribe</div>
Fixed
<input type="checkbox" id="news"> <label for="news">Subscribe</label>

How do I check the fix?

  1. Update the post. The issue disappears from the Lumtera Accessibility sidebar on the next check, and from the site report on the next scan.
  2. Press Tab from the top of the page. Focus should move in reading order and never land on something invisible or silent.

Find this issue across your whole site

Lumtera runs this check in the block editor sidebar as you write, in the Elementor panel, in Review mode on the live page, and across the whole site in the content report and with wp lumtera scan. You can change its severity or turn it off in Lumtera → Settings.

All checks

Start with the free plugin today

All 88 content checks and 38 whole-page checks, fixes you approve with undo, and the site report — free, with no account and no page limits.