AccessPilot – Documentation
Version 1.1.0
Accessibility checker and fixer for WordPress. No overlay widget. One plugin with every tool included.
Overview
AccessPilot finds common WCAG 2.2 AA failures in your content and rendered pages and helps you fix them at the source. It never injects an overlay toolbar. Everything below ships in the single accesspilot plugin: there is no add-on, licence key or other plugin to install.
Content tools
Editor sidebar checks, site-wide report with background scanning, one-click alt text, front-end fixes, accessibility statement, setup wizard.
Pro tools (included)
Rendered page crawls, bulk/AI alt text, PDFs, products, fix log + CSV, network admin, HTML/PDF client reports.
No automated tool can find every accessibility issue or guarantee legal compliance. Use AccessPilot alongside manual keyboard and screen reader testing.
Installation & setup wizard
- Go to Plugins → Add New → Upload Plugin and upload
accesspilot-1.1.0.zip. Activate it (on multisite you may Network Activate to manage Pro settings network-wide). - The Setup Wizard opens once after activation (you can reopen it at AccessPilot → Setup Wizard):
- Content and fixes – choose the content types to check and switch on any front-end fixes.
- Accessibility statement – organisation, contact email and WCAG level.
- Crawl and AI options – schedule crawls and optionally add your own AI key.
- First scan – start the site-wide content scan.
- Open AccessPilot → Report to follow progress.
Upgrading from 1.0 with the separate “AccessPilot Pro” add-on: the add-on is deactivated automatically because its features are built in. To keep its settings and fix log, remove the accesspilot-pro folder by FTP or your host’s file manager rather than deleting it from the Plugins screen (its old uninstaller would erase them).
Requirements: WordPress 6.2+, PHP 7.4–8.5, the PHP DOM extension (standard on most hosts), working WP-Cron (or a real cron calling wp-cron.php). WooCommerce is optional and only needed for product checks.
Content tools
Checks
| Check | What it flags | Severity |
|---|---|---|
| Alt text | Images with no alt; linked images whose empty alt leaves the link with no name |
Error |
| Colour contrast | Text below 4.5:1 (3:1 for large text), using inline colours, block colour classes, the theme.json palette and the theme’s default text/background | Error |
| Headings | Skipped levels (e.g. h2 → h4) and empty headings | Warning / Error |
| Links & buttons | Links or buttons with no text or accessible name | Error |
| Form labels | Inputs, selects and textareas with no label, aria-label or title | Error |
| Vague link text | “click here”, “read more”, “learn more” and similar | Warning |
Block editor sidebar
Click the universal-access icon in the editor toolbar, then Scan this content. Unsaved changes are scanned. For image issues, type a description and press Fix alt text: it is saved to the Media Library and to the image block.
Site-wide report
AccessPilot → Report lists every scanned item with error and warning counts, sortable, searchable and paged. Scan entire site processes 10 items per batch through WP-Cron and also advances while the page is open. Each row has Re-scan and an inline Fix image alt text panel. Published posts are re-scanned automatically when saved.
One-click alt text
Fix alt text from AccessPilot → Alt Text (pre-filled suggestions from file names), from the Alt text column in the Media Library list view, or from the report.
Front-end fixes
Opt-in fixes under AccessPilot → Fixes: skip link, visible focus outline, removal of positive tabindex, underlined content links, and filling missing alt attributes from the Media Library.
Accessibility statement
Fill in AccessPilot → Statement and click Create statement page, or place [accesspilot_statement] on any page.
Pro tools
Site crawl
AccessPilot → Site Crawl fetches your own rendered pages (home page plus every published, non-password item of the scanned content types, and products when WooCommerce is active) with wp_remote_get and checks the full HTML, including theme header, menus and footer, plus page lang and <title>. Run it on demand or schedule daily/weekly in Pro Settings. By default every page is crawled. If you set Max pages per crawl, the crawl stops there and the screen tells you how many pages were not crawled. Results are paged 50 per screen.
Bulk alt text with optional AI
Bulk Alt Text lists images without alt text 50 per page, with “Showing X–Y of Z” and page links to reach all of them. Generate suggestions from file names or, if you saved your own API key, with AI. Review and edit, then Apply all on this page. Fixed images drop off the list, so reloading brings the next images up. Images are sent to the AI provider only when you click “Suggest with AI” (see External services).
PDF checks
PDFs checks every PDF in the Media Library for a tagged structure tree, a document title and a document language using basic parsing (including compressed object streams). The check runs in background batches of 20 with live progress until all PDFs are done; results are paged.
WooCommerce product checks
Products (shown when WooCommerce is active) checks every published product for missing images, product and gallery images without alt text, empty descriptions, and content issues in descriptions, in the same background batches.
Remediation log
Every fix (editor, report, media, bulk) is recorded with user, time, before and after values. Fix Log shows 100 entries per page with page links; Export CSV downloads every entry.
Multisite
Network-activate to share Pro settings across the network and get a Network Admin → AccessPilot overview of scans and crawls per site, 50 sites per page.
White-label client reports
Download HTML or PDF reports from Client Reports with your company name, logo, brand colour and footer. Reports contain the summary totals and the top 15 pages needing the most work.
Limits & background jobs
- Content scan: 10 items per WP-Cron batch. Crawl: 5 pages per batch. PDF and product checks: 20 items per batch. Each continues until everything is covered.
- Every background job claims its work with an atomic database lease (a token plus expiry written in one query). Overlapping cron runs, open admin tabs and the “run now” buttons cannot process the same batch twice; a lease left by a crashed request expires and the job resumes.
- Each scanned item stores up to 200 issues. Each crawled page shows its first 25 issues and the total count; open the page in the editor sidebar for the full list.
- Crawl: every published page unless you set Max pages per crawl (0 = no limit, maximum 100,000).
- AI alt text: up to 3 images per request, within your per-minute budget (default 10, maximum 60).
- Colours set only in external CSS files are not evaluated for contrast.
External services
AccessPilot sends data to a third party only for the optional AI alt text feature.
- Service: OpenAI Chat Completions API (
https://api.openai.com/v1/chat/completions) by default, or the OpenAI-compatible endpoint you enter in Pro Settings. - When: only when an administrator clicks Suggest with AI on Bulk Alt Text and an API key is saved. Nothing is sent on page views, by cron, or automatically.
- Data sent: the image file (medium size when available), your site language code, the model name, and your own API key as the authorization header. Your provider bills you for these requests.
- Rate limiting: a per-minute request budget, 30-second timeout, up to 3 attempts with exponential backoff (2, 4 s, honouring
Retry-After) on HTTP 429 or 5xx, then a cool-down of 1, 2, 4, 8 or 16 minutes after repeated 429s. The browser waits and retries rate-limited images automatically, up to 5 times. - OpenAI terms of use and privacy policy.
The site crawl requests pages on your own site only (same host).
Settings reference
| Setting | Where | Default |
|---|---|---|
| Skip link / target ID | Fixes, Setup Wizard | Off / auto-detect |
| Visible focus outline | Fixes, Setup Wizard | Off |
| Remove positive tabindex | Fixes, Setup Wizard | Off |
| Underline links in content | Fixes, Setup Wizard | Off |
| Use Media Library alt text | Fixes, Setup Wizard | Off |
| Content types to scan | Fixes, Setup Wizard | Posts, Pages |
| Organisation, contact email, WCAG level, date, known limitations | Statement, Setup Wizard | Site name, admin email, AA |
| Scheduled crawl | Pro Settings, Setup Wizard | Off |
| Max pages per crawl | Pro Settings | 0 (every page) |
| AI endpoint, API key, model | Pro Settings (key also in Setup Wizard) | OpenAI URL, empty, gpt-4o-mini |
| AI requests per minute | Pro Settings | 10 |
| Report company, logo, colour, footer | Pro Settings | Site name, none, #1a5fb4 |
Developer hooks
accesspilot_scan_issues(filter) – modify issues returned for any HTML.accesspilot_vague_link_phrases(filter) – phrases treated as vague link text.accesspilot_post_types(filter) – post types scanned.accesspilot_fix_applied(action) –( $type, $object_id, $details )when a fix is applied.accesspilot_post_scanned(action) – after a post is scanned.accesspilot_pro_crawl_extra_urls(filter) – extra same-site URLs to add to each crawl.accesspilot_pro_ai_backoff(filter) – seconds to wait before an AI retry.- REST:
accesspilot/v1/scan,/alt,/batch;accesspilot-pro/v1/crawl,/job,/alt-suggest.
FAQ
Does AccessPilot make my site compliant?
No automated tool can guarantee compliance. AccessPilot catches common, machine-detectable failures; combine it with manual keyboard and screen reader testing.
Why no overlay widget?
Overlays do not repair the underlying markup and are widely criticised by disabled users. AccessPilot fixes content and theme output directly.
Do I need another plugin or a licence key?
No. AccessPilot is one plugin with every tool included and no licence checks.
Does AccessPilot contact external servers?
Only your own site (crawls) and, if you configure it, your chosen AI endpoint when you click “Suggest with AI”.
Are colours from my theme stylesheet checked?
Colours from inline styles, block colour classes, the theme.json palette and theme defaults are evaluated. Colours set only in external CSS files are not.
What happens when I uninstall?
Deleting AccessPilot removes its options, scan data, crawl and check results, and the remediation log table. Your content and saved alt text stay.
Support
Email admin@007aj.com, or message us from your WPBay purchase page.
Please include:
- your site URL, and the WordPress, PHP and AccessPilot versions (Tools → Site Health → Info);
- your theme and other active plugins, and whether the site is multisite or uses WooCommerce;
- the AccessPilot screen involved and the exact steps to reproduce the problem;
- any error text, the relevant lines from
wp-content/debug.log, and screenshots; - for crawl or check jobs, the progress numbers shown on screen and whether WP-Cron is disabled.
Never send passwords or API keys. We will never ask for them. Remove keys from any screenshot or log before sending.
Changelog
1.1.0 – 2026-10-29
- AccessPilot and AccessPilot Pro merged into one plugin; no add-on or other plugin required.
- New setup wizard after activation.
- Site crawl covers every published page by default; optional page limit with a visible “not crawled” notice.
- PDF and WooCommerce checks run as resumable background jobs covering every item.
- Paging for Bulk Alt Text, crawl, PDF and product results, the fix log and the network overview.
- Atomic database leases for the content scan, crawl and check jobs.
- AI alt text: per-minute budget, timeout, exponential backoff on 429/5xx and automatic retry.
- External services disclosure, Support section, translation template.
1.0.0 – 2026-10-23
- Initial release.