WordPress Accessibility Review Skill
Overview
Systematic accessibility review for WordPress themes, blocks, plugins, and admin interfaces. Core principle: Accessibility should be built into structure, interactions, and state changes, not patched in with scattered ARIA. Review covers semantic markup, keyboard behavior, focus management, labels, error messaging, admin interactions, block output, and JS-driven UI changes.
When to Use
Use when:
- Reviewing theme templates or block markup
- Auditing admin forms or custom plugin UI
- Checking modal, tab, accordion, or menu interactions
- Reviewing form labels, errors, and focus behavior
- Validating accessible implementation before release
Don't use for:
- Pure visual design critique without implementation context
- Performance-only or security-only review
- Color contrast measurement from screenshots alone
Code Review Workflow
Identify surface
- Frontend template
- Block output
- Admin interface
- Interactive JS component
Check structural semantics
- Heading order
- Buttons vs links
- Form label association
- Table/list semantics
Check interaction behavior
- Keyboard access
- Focus visibility and focus return
- Live region or status messaging when needed
- Dialog/accordion/tab semantics where applicable
Apply severity
- CRITICAL: Core action inaccessible by keyboard, unlabeled required form controls, modal or menu traps focus incorrectly
- WARNING: Weak semantics, poor error association, ARIA misuse, clickable non-buttons
- INFO: Could improve heading structure, help text, or landmark usage
File-Type Specific Checks
Templates and Markup
- CRITICAL: Interactive elements implemented as
div/span without keyboard support
- WARNING: Missing heading structure or landmark usage
- WARNING: Form inputs without labels
- INFO: Could use native elements instead of ARIA-heavy replacements
JavaScript Interactions
- CRITICAL: Focus not moved into modal or not returned on close
- WARNING: Keyboard handlers incomplete
- WARNING: State changes only visible visually
- INFO: Could use live regions for async updates
Block and Admin UI Output
- WARNING: Inspector controls or block UI labels unclear
- WARNING: Admin notices not announced appropriately
- INFO: Could improve empty-state clarity and assistive text
Search Patterns for Quick Detection (A11Y-21)
Use these rg commands for fast accessibility-oriented code scanning.
CRITICAL Patterns
# Click handlers on non-semantic elements
rg -n "<(div|span)[^>]+on(click|key)" . -g '*.{php,html,js,jsx}'
# Form controls without obvious label references
rg -n "<input|<select|<textarea" . -g '*.{php,html}'
# Dialog or modal implementations
rg -n "dialog|modal|aria-modal|role=['\"]dialog" . -g '*.{php,html,js,jsx}'
WARNING Patterns
# ARIA usage candidates to inspect manually
rg -n "aria-|role=" . -g '*.{php,html,js,jsx}'
# Button-like links or link-like buttons
rg -n "<a[^>]+href=['\"]#|<button[^>]+onclick" . -g '*.{php,html}'
# Focus management code
rg -n "focus\(|tabindex|keydown|keyup" . -g '*.{js,jsx,php}'
INFO Patterns
# Headings and landmark structure
rg -n "<h[1-6]|<main|<nav|<aside|<header|<footer" . -g '*.{php,html}'
Reference Files
references/semantic-and-form-patterns.md - Native semantics, labels, error messaging, and form structure
references/interactive-a11y-patterns.md - Modals, menus, accordions, tabs, focus management, and keyboard behavior
Output Format (A11Y-23)
For each finding include severity, file reference, affected user interaction, why the implementation is inaccessible, and the practical fix. Prefer implementation guidance over broad compliance language.
1---2name: wp-accessibility-review-23description: WordPress accessibility review for themes, blocks, plugins, and admin interfaces. Use when reviewing keyboard navigation, focus behavior, semantic HTML, ARIA usage, form labeling, screen-reader support, contrast-related implementation issues, or when user mentions "accessibility review", "a11y", "keyboard navigation", "focus management", "screen reader", "ARIA", "semantic HTML", "accessible form", or "accessible block". Detects implementation-level accessibility issues in frontend output, block markup, admin screens, and interactive UI behavior.4---56# WordPress Accessibility Review Skill78## Overview910Systematic accessibility review for WordPress themes, blocks, plugins, and admin interfaces. **Core principle:** Accessibility should be built into structure, interactions, and state changes, not patched in with scattered ARIA. Review covers semantic markup, keyboard behavior, focus management, labels, error messaging, admin interactions, block output, and JS-driven UI changes.1112## When to Use1314**Use when:**15- Reviewing theme templates or block markup16- Auditing admin forms or custom plugin UI17- Checking modal, tab, accordion, or menu interactions18- Reviewing form labels, errors, and focus behavior19- Validating accessible implementation before release2021**Don't use for:**22- Pure visual design critique without implementation context23- Performance-only or security-only review24- Color contrast measurement from screenshots alone2526## Code Review Workflow27281. **Identify surface**29 - Frontend template30 - Block output31 - Admin interface32 - Interactive JS component33342. **Check structural semantics**35 - Heading order36 - Buttons vs links37 - Form label association38 - Table/list semantics39403. **Check interaction behavior**41 - Keyboard access42 - Focus visibility and focus return43 - Live region or status messaging when needed44 - Dialog/accordion/tab semantics where applicable45464. **Apply severity**47 - **CRITICAL:** Core action inaccessible by keyboard, unlabeled required form controls, modal or menu traps focus incorrectly48 - **WARNING:** Weak semantics, poor error association, ARIA misuse, clickable non-buttons49 - **INFO:** Could improve heading structure, help text, or landmark usage5051## File-Type Specific Checks5253### Templates and Markup5455- CRITICAL: Interactive elements implemented as `div`/`span` without keyboard support56- WARNING: Missing heading structure or landmark usage57- WARNING: Form inputs without labels58- INFO: Could use native elements instead of ARIA-heavy replacements5960### JavaScript Interactions6162- CRITICAL: Focus not moved into modal or not returned on close63- WARNING: Keyboard handlers incomplete64- WARNING: State changes only visible visually65- INFO: Could use live regions for async updates6667### Block and Admin UI Output6869- WARNING: Inspector controls or block UI labels unclear70- WARNING: Admin notices not announced appropriately71- INFO: Could improve empty-state clarity and assistive text7273## Search Patterns for Quick Detection (A11Y-21)7475Use these `rg` commands for fast accessibility-oriented code scanning.7677### CRITICAL Patterns7879```bash80# Click handlers on non-semantic elements81rg -n "<(div|span)[^>]+on(click|key)" . -g '*.{php,html,js,jsx}'8283# Form controls without obvious label references84rg -n "<input|<select|<textarea" . -g '*.{php,html}'8586# Dialog or modal implementations87rg -n "dialog|modal|aria-modal|role=['\"]dialog" . -g '*.{php,html,js,jsx}'88```8990### WARNING Patterns9192```bash93# ARIA usage candidates to inspect manually94rg -n "aria-|role=" . -g '*.{php,html,js,jsx}'9596# Button-like links or link-like buttons97rg -n "<a[^>]+href=['\"]#|<button[^>]+onclick" . -g '*.{php,html}'9899# Focus management code100rg -n "focus\(|tabindex|keydown|keyup" . -g '*.{js,jsx,php}'101```102103### INFO Patterns104105```bash106# Headings and landmark structure107rg -n "<h[1-6]|<main|<nav|<aside|<header|<footer" . -g '*.{php,html}'108```109110## Reference Files111112- `references/semantic-and-form-patterns.md` - Native semantics, labels, error messaging, and form structure113- `references/interactive-a11y-patterns.md` - Modals, menus, accordions, tabs, focus management, and keyboard behavior114115## Output Format (A11Y-23)116117For each finding include severity, file reference, affected user interaction, why the implementation is inaccessible, and the practical fix. Prefer implementation guidance over broad compliance language.118