SlideShare a Scribd company logo
Joe Dolson
WordCamp Minneapolis 2013
Accessibility & WordPress
Developing for the whole world.
Joe Dolson
WordCamp Minneapolis 2013
Who am I?
- A WordPress developer (since 2006)
- An advocate and consultant on web accessibility (since
2004)
- A writer & speaker on practical accessibility
- At http://www.joedolson.com or on Twitter, @joedolson
Joe Dolson
WordCamp Minneapolis 2013
WordPress Accessibility Today
–Plugins
–Themes
–Core
Joe Dolson
WordCamp Minneapolis 2013
Why Accessibility? Why WordPress?
Joe Dolson
WordCamp Minneapolis 2013
Why Accessibility? Why WordPress?
The impact of accessibility in
WordPress is enormous.
Joe Dolson
WordCamp Minneapolis 2013
Why Accessibility? Why WordPress?
65% of the top 1,000,000 sites
are running WordPress
http://trends.builtwith.com/cms
Joe Dolson
WordCamp Minneapolis 2013
Where to start:
Understanding Accessibility
- P.O.U.R. Principles:
–Perceivable,
–Operable,
–Understandable, and
–Robust
Joe Dolson
WordCamp Minneapolis 2013
Developer's basic knowledge base:
- Use WP core methods whenever possible even
if they are not currently accessible.
- Produce semantic output.
- Create identifiable, focusable controls.
Joe Dolson
WordCamp Minneapolis 2013
Why use core methods that aren't
accessible?
- If there's a problem in core, submit a patch instead of rolling
your own.
- Improving core makes a better experience for everyone, not
just users of your theme or plug-in.
Joe Dolson
WordCamp Minneapolis 2013
What problems are in core (on the front-end)?
- Massive abuse of title elements.
- Submission of an empty search doesn't return an error.
- Default 'read more' text is meaningless out of context.
- Text in default comment form that is not associated with form
fields.
Joe Dolson
WordCamp Minneapolis 2013
What issues are in core (on the back-end)?
- Issues with voice-activated control.
- Keyboard navigability
- Custom menu management
- Add Media Panel
- ATAG compliance
http://core.trac.wordpress.org/query?status=new&component=Accessibility
Joe Dolson
WordCamp Minneapolis 2013
Building a theme? Use filters for core issues:
Example: generate error on search
add_filter('pre_get_posts','wpa_filter');
function wpa_filter($query) {
if ( isset($_GET['s']) && $_GET['s'] == '' ) {
$query->query_vars['s'] = ' ';
$query->set( 'is_search', 1 );
add_action('template_redirect','wpa_search_error');
}
return $query;
}
function wpa_search_error() {
$search = locate_template( 'search.php' );
if ( $search ) {
load_template( $search );
exit;
}
}
Joe Dolson
WordCamp Minneapolis 2013
Another Example:
Example: filter title attributes
add_filter('wp_nav_menu', 'remove_title_attributes' );
add_filter('wp_list_pages', 'remove_title_attributes');
add_filter('wp_list_categories', 'remove_title_attributes');
add_filter('get_archives_link', 'remove_title_attributes');
add_filter('wp_tag_cloud', 'remove_title_attributes');
add_filter('the_category', 'remove_title_attributes');
add_filter('edit_post_link', 'remove_title_attributes');
add_filter('edit_comment_link', 'remove_title_attributes');
function remove_title_attributes( $output ) {
$output = preg_replace('/s*titles*=s*(["']).*?1/', '', $output);
return $output;
}
Download code: http://www.joedolson.com/wordcamp-code.zip
Joe Dolson
WordCamp Minneapolis 2013
How developers can break accessibility
Joe Dolson
WordCamp Minneapolis 2013
What code are you introducing?
Stylesheets
- display:none;
- contrast issues
- keyboard focus
- mouse hover
HTML
- source/tab order
- skip links
- custom forms
- semantic structure
Joe Dolson
WordCamp Minneapolis 2013
What about JavaScript?
Sometimes, it gets a bad rap...
- DOM manipulation: consider linearization
- WAI-ARIA:
– roles, aria-live, aria-required, aria-labelledby
- Assigning cursor focus (modals & alerts):
document.getElementById('id').focus();
Joe Dolson
WordCamp Minneapolis 2013
ARIA examples:
<div class='slider' aria-live='polite'>
<div class='slide'>Your slide content</div>
<div class='slide'>Your other slide</div>
</div>
<div class='slider-nav'>
<a href='#' role='button'>Previous</a>
<a href='#' role='button'>Next</a>
</div>
Joe Dolson
WordCamp Minneapolis 2013
ARIA examples:
<label for="comment">Comment</label>
<textarea id="comment" name="comment" cols="45"
rows="8" aria-required="true"></textarea></p>
<p class="form-allowed-tags">You may use these <abbr
title="HyperText Markup Language">HTML</abbr> tags
and attributes: <code>blah blah blah</code></p>
Joe Dolson
WordCamp Minneapolis 2013
ARIA examples:
<label for="comment" id="comment-
label">Comment</label>
<textarea id="comment" name="comment" cols="45"
rows="8" aria-required="true" aria-
labelledby="comment-label form-allowed-
tags"></textarea></p>
<p class="form-allowed-tags" id="form-allowed-
tags">You may use these <abbr title="HyperText
Markup Language">HTML</abbr> tags and attributes:
<code>blah blah blah</code></p>
Joe Dolson
WordCamp Minneapolis 2013
Accessible output and controls
- Do links make sense out of context?
- Do headings make sense out of context?
- Can controls be activated from the keyboard? By voice
activation?
- Even if you can activate a control – can you tell what will happen
before activating it?
Joe Dolson
WordCamp Minneapolis 2013
What's moving in WordPress Accessibility?
Joe Dolson
WordCamp Minneapolis 2013
My WP-Accessibility plug-in
• Removes redundant title attributes
• Enable skip links with WebKit
• Add skip links with user-defined targets.
• Add language and text direction attributes
• Remove the target attribute from links.
• Force a search page error on an empty search
• Remove tabindex from elements that are focusable.
• Strip title attributes from images in content.
• Add post titles to "read more" links.
• Add outline to :focus state for focusable elements.
• Provide a toolbar to toggle high-contrast or large text
• Adjust admin stylesheet
Joe Dolson
WordCamp Minneapolis 2013
Why is this not the best solution?
- You can't provide complete accessibility without knowledge of
the theme. All of these features should be fixed in themes or in
WordPress core.
Joe Dolson
WordCamp Minneapolis 2013
The Cities Project
- The Cities project, by Joseph O'Connor:
http://accessiblejoe.com/cities/
- Teams accessibility professionals with WordPress
developers.
Joe Dolson
WordCamp Minneapolis 2013
Other Plans
- The P2 Make.Wordpress.Accessible group:
http://make.wordpress.org/accessibility
- Weekly WordPress Accessibility chat on IRC at
irc.freenode.net/wordpress-ui
The WP-Accessible project highlights plug-ins and themes
that help accessibility at http://wp-accessible.com
- Theme Accessibility Audit Guidelines:
http://codex.wordpress.org/Theme_Review#Accessibility

More Related Content

ODP
WordPress Accessibility: WordCamp Chicago
Joseph Dolson
 
PDF
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
Yandex
 
PDF
Using Core Themes in Drupal 8
Suzanne Dergacheva
 
PPSX
Responsive Web Design: Tips and Tricks
Gautam Krishnan
 
PDF
Improving the Responsive Web Design Process in 2016
Cristina Chumillas
 
PDF
CSS Lessons Learned the Hard Way (Generate Conf)
Zoe Gillenwater
 
PPTX
To build a WordPress Theme: Wordcamp Denmark 2014
James Bonham
 
PPTX
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
David Wesst
 
WordPress Accessibility: WordCamp Chicago
Joseph Dolson
 
"Responsive Web Design: Clever Tips and Techniques". Vitaly Friedman, Smashin...
Yandex
 
Using Core Themes in Drupal 8
Suzanne Dergacheva
 
Responsive Web Design: Tips and Tricks
Gautam Krishnan
 
Improving the Responsive Web Design Process in 2016
Cristina Chumillas
 
CSS Lessons Learned the Hard Way (Generate Conf)
Zoe Gillenwater
 
To build a WordPress Theme: Wordcamp Denmark 2014
James Bonham
 
5 Reasons Why Your Website Is[n’t] a Native App (PrDC 2015)
David Wesst
 

What's hot (20)

PDF
Component Driven Design and Development
Cristina Chumillas
 
PDF
Web Development for UX Designers
Ashlimarie
 
PPTX
2011-11 Chennai Social Media Summit Keynote
Gillian Muessig
 
PPTX
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
David Wesst
 
PPT
jQuery For Beginners - jQuery Conference 2009
Ralph Whitbeck
 
PDF
Responsive Web Design
Debra Shapiro
 
PDF
Building mobile applications with DrupalGap
Alex S
 
PDF
DrupalCamp NYC Panels Presentation - April 2014
Suzanne Dergacheva
 
PDF
Introduction to the Drupal - Web Experience Toolkit
Suzanne Dergacheva
 
PDF
Creating Dynamic Landing Pages for Drupal with Panels - Webinar
Suzanne Dergacheva
 
PDF
Decoupling the Front-end with Modular CSS
Julie Cameron
 
PDF
Unobtrusive JavaScript
daveverwer
 
PDF
Real World Web components
Jarrod Overson
 
PPTX
Harness jQuery Templates and Data Link
BorisMoore
 
PPTX
Bootstrap [part 2]
Ghanshyam Patel
 
PDF
Creating a Responsive Drupal Theme: Presentation from DrupalCamp Montreal 2012
Suzanne Dergacheva
 
PDF
Atomic Design - BDConf Nashville, 2013
Brad Frost
 
KEY
Let's dig into the Omega Theme!
Mediacurrent
 
PDF
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
David Wesst
 
PDF
워드프레스 플러그인 개발 입문
Donghyeok Kang
 
Component Driven Design and Development
Cristina Chumillas
 
Web Development for UX Designers
Ashlimarie
 
2011-11 Chennai Social Media Summit Keynote
Gillian Muessig
 
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
David Wesst
 
jQuery For Beginners - jQuery Conference 2009
Ralph Whitbeck
 
Responsive Web Design
Debra Shapiro
 
Building mobile applications with DrupalGap
Alex S
 
DrupalCamp NYC Panels Presentation - April 2014
Suzanne Dergacheva
 
Introduction to the Drupal - Web Experience Toolkit
Suzanne Dergacheva
 
Creating Dynamic Landing Pages for Drupal with Panels - Webinar
Suzanne Dergacheva
 
Decoupling the Front-end with Modular CSS
Julie Cameron
 
Unobtrusive JavaScript
daveverwer
 
Real World Web components
Jarrod Overson
 
Harness jQuery Templates and Data Link
BorisMoore
 
Bootstrap [part 2]
Ghanshyam Patel
 
Creating a Responsive Drupal Theme: Presentation from DrupalCamp Montreal 2012
Suzanne Dergacheva
 
Atomic Design - BDConf Nashville, 2013
Brad Frost
 
Let's dig into the Omega Theme!
Mediacurrent
 
HTML5: The Parts You Care About - 4/Nov/13 - PrDC Saskatoon, SK
David Wesst
 
워드프레스 플러그인 개발 입문
Donghyeok Kang
 
Ad

Similar to Accessibility & WordPress: Developing for the whole world. (20)

PDF
Cities: HTML5 Meetup 13 August 2013
Los Angeles Accessibility and Inclusive Design Group
 
PDF
Cities: WordCamp Montreal 2013
Los Angeles Accessibility and Inclusive Design Group
 
ODP
WordPress and Accessibility
Joseph Dolson
 
PDF
Cities: Making Free Accessible WordPress Themes
Los Angeles Accessibility and Inclusive Design Group
 
PDF
People First Accessibility
Trisha Salas
 
ODP
Accessibility with WordPress
Joseph Dolson
 
PPTX
A11y Conference Talk: Building an Accessible WordPress Theme
TomAuger
 
PDF
Roadmap to WordPress Accessibility CSUN 2014
Los Angeles Accessibility and Inclusive Design Group
 
PPTX
WordPress Accessibility - WordCamp Buffalo 2016
Adrian Roselli
 
PPTX
Accessibility With WordPress: Accessing Higher Ground 2014
Joseph Dolson
 
PPTX
Introduction to accessibility
Joseph McLarty
 
PPTX
Practical A11y testing for surveys
Institute For Community Inclusion/ UMB
 
PPTX
WordPress and Accessibility
Patrick R
 
PPTX
WordPress and Web Accessibility - 2013
Graham Armfield
 
PPTX
Massively maintained accessibility: WordPress
Joseph Dolson
 
PPTX
Lit 20170306
Scott Williams
 
PDF
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Jared Smith
 
PDF
Keeping Your Website Accessible
Kelli Wise
 
PPTX
Wordpress and Web Accessibility Wordcamp UK 2014
Graham Armfield
 
PDF
Diy accessibility
Caleb Tang
 
Cities: HTML5 Meetup 13 August 2013
Los Angeles Accessibility and Inclusive Design Group
 
WordPress and Accessibility
Joseph Dolson
 
Cities: Making Free Accessible WordPress Themes
Los Angeles Accessibility and Inclusive Design Group
 
People First Accessibility
Trisha Salas
 
Accessibility with WordPress
Joseph Dolson
 
A11y Conference Talk: Building an Accessible WordPress Theme
TomAuger
 
Roadmap to WordPress Accessibility CSUN 2014
Los Angeles Accessibility and Inclusive Design Group
 
WordPress Accessibility - WordCamp Buffalo 2016
Adrian Roselli
 
Accessibility With WordPress: Accessing Higher Ground 2014
Joseph Dolson
 
Introduction to accessibility
Joseph McLarty
 
Practical A11y testing for surveys
Institute For Community Inclusion/ UMB
 
WordPress and Accessibility
Patrick R
 
WordPress and Web Accessibility - 2013
Graham Armfield
 
Massively maintained accessibility: WordPress
Joseph Dolson
 
Lit 20170306
Scott Williams
 
Web Accessibility Gone Wild (Now Even MORE Wilder!)
Jared Smith
 
Keeping Your Website Accessible
Kelli Wise
 
Wordpress and Web Accessibility Wordcamp UK 2014
Graham Armfield
 
Diy accessibility
Caleb Tang
 
Ad

More from Joseph Dolson (16)

PPTX
Why #A11y?
Joseph Dolson
 
PPTX
WordPress and ATAG Compliance
Joseph Dolson
 
PPTX
If you build it, they will come.
Joseph Dolson
 
PPTX
Electronic information and accessible technology
Joseph Dolson
 
PPTX
JavaScript and Accessibility
Joseph Dolson
 
PPTX
The WordPress Way: Accessibility and Backwards Compatibility
Joseph Dolson
 
PPTX
WordCamp US: ARIA. Roles, States and Properties
Joseph Dolson
 
PPTX
Build a WordPress Plug-in: Accessible social sharing
Joseph Dolson
 
PPTX
Automating Accessibility: WordCamp Minneapolis 2015
Joseph Dolson
 
PPTX
Good Habits: Coding for Accessibility - WordCamp San Francisco 2014
Joseph Dolson
 
PPTX
The Accessible Web: Improving the Universal Experience
Joseph Dolson
 
PPTX
Mission: Accessible. Share & Connect Online with Everybody!
Joseph Dolson
 
ODP
Encouraging Accessibility
Joseph Dolson
 
PPT
Accessible Web Sites: What can you do?
Joseph Dolson
 
ODP
Web Accessibility: A Shared Responsibility
Joseph Dolson
 
PPT
SES Toronto 2008; Joe Dolson
Joseph Dolson
 
Why #A11y?
Joseph Dolson
 
WordPress and ATAG Compliance
Joseph Dolson
 
If you build it, they will come.
Joseph Dolson
 
Electronic information and accessible technology
Joseph Dolson
 
JavaScript and Accessibility
Joseph Dolson
 
The WordPress Way: Accessibility and Backwards Compatibility
Joseph Dolson
 
WordCamp US: ARIA. Roles, States and Properties
Joseph Dolson
 
Build a WordPress Plug-in: Accessible social sharing
Joseph Dolson
 
Automating Accessibility: WordCamp Minneapolis 2015
Joseph Dolson
 
Good Habits: Coding for Accessibility - WordCamp San Francisco 2014
Joseph Dolson
 
The Accessible Web: Improving the Universal Experience
Joseph Dolson
 
Mission: Accessible. Share & Connect Online with Everybody!
Joseph Dolson
 
Encouraging Accessibility
Joseph Dolson
 
Accessible Web Sites: What can you do?
Joseph Dolson
 
Web Accessibility: A Shared Responsibility
Joseph Dolson
 
SES Toronto 2008; Joe Dolson
Joseph Dolson
 

Recently uploaded (20)

PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Get More from Fiori Automation - What’s New, What Works, and What’s Next.pdf
Precisely
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
cloud computing vai.pptx for the project
vaibhavdobariyal79
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 

Accessibility & WordPress: Developing for the whole world.

  • 1. Joe Dolson WordCamp Minneapolis 2013 Accessibility & WordPress Developing for the whole world.
  • 2. Joe Dolson WordCamp Minneapolis 2013 Who am I? - A WordPress developer (since 2006) - An advocate and consultant on web accessibility (since 2004) - A writer & speaker on practical accessibility - At http://www.joedolson.com or on Twitter, @joedolson
  • 3. Joe Dolson WordCamp Minneapolis 2013 WordPress Accessibility Today –Plugins –Themes –Core
  • 4. Joe Dolson WordCamp Minneapolis 2013 Why Accessibility? Why WordPress?
  • 5. Joe Dolson WordCamp Minneapolis 2013 Why Accessibility? Why WordPress? The impact of accessibility in WordPress is enormous.
  • 6. Joe Dolson WordCamp Minneapolis 2013 Why Accessibility? Why WordPress? 65% of the top 1,000,000 sites are running WordPress http://trends.builtwith.com/cms
  • 7. Joe Dolson WordCamp Minneapolis 2013 Where to start: Understanding Accessibility - P.O.U.R. Principles: –Perceivable, –Operable, –Understandable, and –Robust
  • 8. Joe Dolson WordCamp Minneapolis 2013 Developer's basic knowledge base: - Use WP core methods whenever possible even if they are not currently accessible. - Produce semantic output. - Create identifiable, focusable controls.
  • 9. Joe Dolson WordCamp Minneapolis 2013 Why use core methods that aren't accessible? - If there's a problem in core, submit a patch instead of rolling your own. - Improving core makes a better experience for everyone, not just users of your theme or plug-in.
  • 10. Joe Dolson WordCamp Minneapolis 2013 What problems are in core (on the front-end)? - Massive abuse of title elements. - Submission of an empty search doesn't return an error. - Default 'read more' text is meaningless out of context. - Text in default comment form that is not associated with form fields.
  • 11. Joe Dolson WordCamp Minneapolis 2013 What issues are in core (on the back-end)? - Issues with voice-activated control. - Keyboard navigability - Custom menu management - Add Media Panel - ATAG compliance http://core.trac.wordpress.org/query?status=new&component=Accessibility
  • 12. Joe Dolson WordCamp Minneapolis 2013 Building a theme? Use filters for core issues: Example: generate error on search add_filter('pre_get_posts','wpa_filter'); function wpa_filter($query) { if ( isset($_GET['s']) && $_GET['s'] == '' ) { $query->query_vars['s'] = '&#32;'; $query->set( 'is_search', 1 ); add_action('template_redirect','wpa_search_error'); } return $query; } function wpa_search_error() { $search = locate_template( 'search.php' ); if ( $search ) { load_template( $search ); exit; } }
  • 13. Joe Dolson WordCamp Minneapolis 2013 Another Example: Example: filter title attributes add_filter('wp_nav_menu', 'remove_title_attributes' ); add_filter('wp_list_pages', 'remove_title_attributes'); add_filter('wp_list_categories', 'remove_title_attributes'); add_filter('get_archives_link', 'remove_title_attributes'); add_filter('wp_tag_cloud', 'remove_title_attributes'); add_filter('the_category', 'remove_title_attributes'); add_filter('edit_post_link', 'remove_title_attributes'); add_filter('edit_comment_link', 'remove_title_attributes'); function remove_title_attributes( $output ) { $output = preg_replace('/s*titles*=s*(["']).*?1/', '', $output); return $output; } Download code: http://www.joedolson.com/wordcamp-code.zip
  • 14. Joe Dolson WordCamp Minneapolis 2013 How developers can break accessibility
  • 15. Joe Dolson WordCamp Minneapolis 2013 What code are you introducing? Stylesheets - display:none; - contrast issues - keyboard focus - mouse hover HTML - source/tab order - skip links - custom forms - semantic structure
  • 16. Joe Dolson WordCamp Minneapolis 2013 What about JavaScript? Sometimes, it gets a bad rap... - DOM manipulation: consider linearization - WAI-ARIA: – roles, aria-live, aria-required, aria-labelledby - Assigning cursor focus (modals & alerts): document.getElementById('id').focus();
  • 17. Joe Dolson WordCamp Minneapolis 2013 ARIA examples: <div class='slider' aria-live='polite'> <div class='slide'>Your slide content</div> <div class='slide'>Your other slide</div> </div> <div class='slider-nav'> <a href='#' role='button'>Previous</a> <a href='#' role='button'>Next</a> </div>
  • 18. Joe Dolson WordCamp Minneapolis 2013 ARIA examples: <label for="comment">Comment</label> <textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p> <p class="form-allowed-tags">You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <code>blah blah blah</code></p>
  • 19. Joe Dolson WordCamp Minneapolis 2013 ARIA examples: <label for="comment" id="comment- label">Comment</label> <textarea id="comment" name="comment" cols="45" rows="8" aria-required="true" aria- labelledby="comment-label form-allowed- tags"></textarea></p> <p class="form-allowed-tags" id="form-allowed- tags">You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <code>blah blah blah</code></p>
  • 20. Joe Dolson WordCamp Minneapolis 2013 Accessible output and controls - Do links make sense out of context? - Do headings make sense out of context? - Can controls be activated from the keyboard? By voice activation? - Even if you can activate a control – can you tell what will happen before activating it?
  • 21. Joe Dolson WordCamp Minneapolis 2013 What's moving in WordPress Accessibility?
  • 22. Joe Dolson WordCamp Minneapolis 2013 My WP-Accessibility plug-in • Removes redundant title attributes • Enable skip links with WebKit • Add skip links with user-defined targets. • Add language and text direction attributes • Remove the target attribute from links. • Force a search page error on an empty search • Remove tabindex from elements that are focusable. • Strip title attributes from images in content. • Add post titles to "read more" links. • Add outline to :focus state for focusable elements. • Provide a toolbar to toggle high-contrast or large text • Adjust admin stylesheet
  • 23. Joe Dolson WordCamp Minneapolis 2013 Why is this not the best solution? - You can't provide complete accessibility without knowledge of the theme. All of these features should be fixed in themes or in WordPress core.
  • 24. Joe Dolson WordCamp Minneapolis 2013 The Cities Project - The Cities project, by Joseph O'Connor: http://accessiblejoe.com/cities/ - Teams accessibility professionals with WordPress developers.
  • 25. Joe Dolson WordCamp Minneapolis 2013 Other Plans - The P2 Make.Wordpress.Accessible group: http://make.wordpress.org/accessibility - Weekly WordPress Accessibility chat on IRC at irc.freenode.net/wordpress-ui The WP-Accessible project highlights plug-ins and themes that help accessibility at http://wp-accessible.com - Theme Accessibility Audit Guidelines: http://codex.wordpress.org/Theme_Review#Accessibility