Ananyoo Accessible Forms – Contact Form & Entry Storage

Changelog

1.2.0

  • New: the “Accessible Forms” menu now opens on a branded Dashboard (the former Getting Started screen) with the blue header, logo, quick start, WCAG conformance statement and version details. All Forms, Add New Form, Entries and Settings sit neatly below it.
  • The Settings screen now carries the same branded header for a consistent look.
  • No changes to your forms, entries, stored data or the front end.

1.1.2

  • Shortened the admin sidebar menu label to “Accessible Forms” for a cleaner menu, consistent with the other Ananyoo accessibility plugins. The directory name is unchanged.
  • Readme: linked the live demo and added Links and Privacy sections. No functional changes.

1.1.1

  • Coding-standards: unified all custom identifiers under the distinct “ananyoo_aaf” prefix. The two custom post types, the spam post status, the entry-manager capability, the Quick View admin-ajax action and its nonce, and all post-meta keys now use the full prefix, avoiding any short or inconsistent names that could collide with other plugins.

1.1.0

  • Renamed the plugin to “Ananyoo Accessible Forms – Contact Form & Entry Storage” so the name leads with the Ananyoo brand and is distinctive (slug: ananyoo-accessible-forms).
  • Coding-standards: the “Add New” rule on the Entries screen is now served from the enqueued admin stylesheet instead of an inline style block.
  • Hardening: POST data passed to the ananyoo_aaf_validation_errors filter is now sanitised before any third-party callback receives it.
  • Hardening: the sender name shown in the Entries list (via the the_title filter) is now escaped at the source.

1.0.9

  • Notification email subject is now “Form Name: Subject” — the form’s title followed by the value of the submission’s subject field (for example, “Enquiry Form: General enquiry”), replacing the old “[Site] New form entry: …” line. When a form has no subject field, or it is left blank, the subject is just the form name.
  • The three sample forms created on a fresh install are now titled in Title Case — “Enquiry Form” (previously “Enquiry form — every field type”), “Newsletter Sign-up” and “Quick Feedback”. Existing forms are unaffected.
  • No accessibility, settings or visual changes.

1.0.8

  • Accessibility (WCAG 3.3.1 / 2.4.3): on a failed submission, keyboard focus now moves to the FIRST field with an error — never to the error summary — so the screen reader announces that field’s own message (via aria-invalid + aria-describedby) and the visitor lands exactly where they can fix it. On a form with many fields, this avoids making the user step past a long list of errors before reaching the first one. Applies to both the client-side check and the server-rendered result after a no-JavaScript submit.
  • The error summary at the top is now a plain, visible overview with jump-links to each field, rather than an assertive alert that takes focus. It still appears only after a failed submission, lists every error, and updates live as fields are corrected — it just no longer competes with, or delays, the announcement of the field that focus lands on.
  • No settings or visual-design changes.

1.0.7

  • Accessibility: error-summary links now move keyboard focus to the matching field on every path. The server-rendered summary previously only scrolled (focus moved only on the JS-built summary); a single delegated handler now covers both, and grouped radio/checkbox fields focus their first option.
  • Accessibility: the group

<

fieldset> now carries the field id, so the summary link for a radio/checkbox group resolves correctly (it pointed at a non-existent target before).
* Accessibility: correcting a field now updates the error summary live — the fixed field’s line is removed from the summary (and the summary disappears once all errors are resolved), matching the inline message that already cleared.
* No settings, markup-structure or visual changes beyond the fieldset id.

1.0.6

  • Getting Started screen: added a “Managing your entries” section covering the entries list columns, the Quick View / View / Trash actions, and the Yes/No display, so the in-plugin help reflects the current features.

1.0.5

  • Single checkbox / consent values now display as “Yes” (or “No”) instead of “1” in the entry view, the Quick View popup and the email notification, so they read clearly.

1.0.4

  • The Sender column now shows the submitter’s name computed from the submission data, so existing entries read cleanly too (not only newly titled ones).
  • New: a “Quick View” row action opens the entry in an accessible modal dialog without leaving the list. Focus moves into the dialog, Escape closes it, focus is trapped while open and returned to the link afterwards, and it falls back to the full View page when JavaScript is unavailable.

1.0.3

  • Entries list improved: the read-only Edit and Quick Edit row actions are replaced by a clear View action (Trash is kept); the first column now shows the Sender name and links to the entry; and new Subject and IP columns are added, with the form name kept in its own column.
  • New submissions are now titled by the sender’s name rather than “Form name — value”, so the entries list reads more cleanly.

1.0.2

  • Improved: in the single-entry admin view, the “Received … from IP …” submission metadata is now shown as a centred band, set apart from the field/value table with space above and below, so it reads clearly as information about the submission rather than a submitted value. (The entry-view styles now load on the entry screen too.)

1.0.1

  • Fixed: the URL/website field rejected valid web addresses. Validation now checks the address format instead of performing a live host lookup, so addresses such as https://www.example.com are accepted.
  • Fixed: required and format error messages no longer show a stray full stop when a field label is written as a sentence (for example a consent line), so the wording reads cleanly.

1.0.0

  • Initial release.
  • Accessible forms built to WCAG 2.2 AA by construction: a real label per field, fieldset/legend for radio and checkbox groups, and the required state exposed to assistive technology.
  • Error handling with managed focus: a role=”alert” summary that links to each field, plus an inline message under every invalid field tied to it with aria-describedby and aria-invalid. Focus moves to the single field when there is one error, or to the summary when there are several.
  • Specific, action-led messages, including format suggestions for email, web address and number fields (WCAG 2.2 SC 3.3.3).
  • On-blur checking that validates a field once the visitor has used it and clears the message live as it is fixed; the form still validates fully on submit and on the server, and works with JavaScript disabled.
  • Values kept on error (SC 3.3.7), a 3 px focus ring and 44 x 44 targets by default (both adjustable), clean reflow at 320 px, and reduced-motion and forced-colors support.
  • Accessible anti-spam with no puzzles: an invisible honeypot and a submission-time trap, plus a recoverable spam quarantine. Optional, automatic Cloudflare Turnstile when the free “Simple CAPTCHA with Cloudflare Turnstile” plugin is active (this plugin loads no third-party script itself); hooks (ananyoo_aaf_before_submit, ananyoo_aaf_validation_errors) allow any other CAPTCHA.
  • Reusable forms placed by ID via the Accessible Form block or the [ananyoo_form id=”123″] shortcode; submissions stored as entries; notifications through wp_mail() for any-SMTP delivery; and an optional clean uninstall.
  • Three ready-to-use example forms created on activation: an enquiry form (every field type), a newsletter sign-up, and a quick feedback form.

Plugin Website
Visit website

Author
ananyoo
Version:
1.2.0
Last Updated
July 8, 2026
Requires
WordPress 6.5
Tested Up To
WordPress 7.0
Requires PHP
7.4

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.