Sitecraft Accessibility
Accessibility Plugin for Wordpress
by Sitecraft · github.com/seldrickd/sitecraft-accessibility · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/seldrickd/sitecraft-accessibility/archive/refs/heads/main.zipA WordPress accessibility plugin that audits content against WCAG 2.1 AA and WCAG 2.2, fixes a specific set of markup problems on the server, and generates a publishable accessibility statement.
It is part of the Sitecraft suite, five plugins built to one engineering contract.
Why this is not an overlay
This is the most important thing to understand about the plugin, so it goes first.
An accessibility overlay is a JavaScript bundle that promises conformance by rewriting a page in the browser. The promise does not hold up:
- The European Commission does not treat overlay-based approaches as a route to EN 301 549 conformance. Conformance is a property of the delivered content.
- In April 2025 the US Federal Trade Commission approved a final order against accessiBe concerning its accessibility claims.
- Screen-reader users report, consistently and publicly, that overlays interfere with the assistive technology they already run. An overlay that fights a user's own software has made the site less usable, not more.
So this plugin does not paint over the page. It does three defensible things:
| What it does | Why it is defensible | |
|---|---|---|
| Audit | Parses content with DOMDocument and reports failures with the WCAG criterion cited |
It tells a human what to fix rather than claiming to have fixed it |
| Remediate | Emits real markup and CSS server-side: skip link, landmarks, lang, focus ring, reduced motion, target size |
The HTML the browser receives is genuinely better |
| Document | Generates the accessibility statement the EAA expects, including known limitations | Honesty about limitations is a defensible legal position; an unsupported claim is not |
There is an optional reading preference panel. It is off by default, it is described to visitors as a convenience, and it carries a footnote saying so. It is not a conformance mechanism and the plugin never presents it as one.
Automated testing finds a minority of WCAG failures. No scanner knows whether your alt text is accurate or whether a keyboard user can finish your checkout. A clean report means the rules found nothing, not that the site is accessible.
Features
Audit engine
Fifteen rules, each a class implementing a Rule interface with id(),
title(), criterion(), level(), severity(), how_to_fix() and
evaluate( DOMXPath $xpath, DOMDocument $doc ): array.
| Rule id | Criterion | Catches |
|---|---|---|
img-alt-missing |
1.1.1 A | <img> with no alt attribute at all |
img-alt-filename |
1.1.1 A | Alt text that is only a filename, e.g. IMG_2043.jpg |
link-empty |
2.4.4 A | <a> with no accessible name |
link-generic-text |
2.4.4 A | "click here", "read more", "more", "link" |
link-raw-url |
2.4.4 A | Link text that is a bare URL |
heading-order-skip |
1.3.1 A | Heading level jumping by more than one |
heading-empty |
1.3.1 A | Heading element with no text content |
table-no-header |
1.3.1 A | Data table with no <th> and no scope |
table-layout |
1.3.1 A | Multi-column table with no headers and no presentation role |
iframe-no-title |
4.1.2 A | ` |