[wp-trac] [WordPress Trac] #47975: Prevent aria-described broken reference in `comment_form()`
WordPress Trac
noreply at wordpress.org
Wed Sep 4 21:04:38 UTC 2019
#47975: Prevent aria-described broken reference in `comment_form()`
-------------------------------------+-----------------------------
Reporter: afercia | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Comments | Version:
Severity: normal | Keywords:
Focuses: accessibility, template |
-------------------------------------+-----------------------------
The `comment_form()` generates a complete commenting form, mainly used by
themes.
The email field markup has an `aria-describedby="email-notes"` attribute
that targets a description. Actually the description is the default
`comment_notes_before` argument and outputs the following HTML (simplified
code):
{{{
<p class="comment-notes"><span id="email-notes">Your email address will
not be published.</span></p>
}}}
However, it is possible to pass the `comment_notes_before` a completely
different HTML (which may ''not'' contain the `email-notes` ID) or an
empty string to completely omit the description. See for example the
comment form on this page:
https://andersnoren.se/themes/chaplin/2014/08/03/babela-armchair/
It's understandable developers are misled: the `comment_form()` function
allows to do this, while it should ensure semantic markup. I'd tend to
think this is a core responsibility that can't be delegated to the
developers attention to details.
In these cases, the `aria-describedby` attribute points to a broken
reference. This should be avoided because the attribute communicates user
agents and assistive technologies there's a description but then the
referenced description is missing. It will be flagged as failure by any
accessibility automated checker tool and, most importantly, is potentially
confusing for assistive technologies users.
Related standard:
https://www.w3.org/TR/WCAG21/#info-and-relationships
Ideally, the `aria-describedby` attribute should be printed out only if
there's a description and only if the targeted ID actually exists. One
option could be checking for a non empty `comment_notes_before` and wrap
an element with ID `email-notes` around its output.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/47975>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list