<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Samuel Femi Taiwo</title>
    <description>The latest articles on DEV Community by Samuel Femi Taiwo (@femiyb).</description>
    <link>https://dev.to/femiyb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3946387%2F92d42189-887a-4a69-af18-dae25c3b5c61.png</url>
      <title>DEV Community: Samuel Femi Taiwo</title>
      <link>https://dev.to/femiyb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/femiyb"/>
    <language>en</language>
    <item>
      <title>From Click to Cart: Ensuring an Accessible Customer Journey in WooCommerce</title>
      <dc:creator>Samuel Femi Taiwo</dc:creator>
      <pubDate>Fri, 22 May 2026 16:07:07 +0000</pubDate>
      <link>https://dev.to/femiyb/from-click-to-cart-ensuring-an-accessible-customer-journey-in-woocommerce-1eh6</link>
      <guid>https://dev.to/femiyb/from-click-to-cart-ensuring-an-accessible-customer-journey-in-woocommerce-1eh6</guid>
      <description>&lt;p&gt;You never know who your inaccessible store affects.&lt;/p&gt;

&lt;p&gt;A while ago, I was checking a merchant's website for a reported issue. Their site had a welcome banner with flashing lights. As someone who is epileptic and sensitive to flashing lights, this was a real problem for me. And I'm a developer, not a customer trying to complete a purchase.&lt;/p&gt;

&lt;p&gt;Accessibility isn't a checklist. It's about ensuring everyone can engage with your site safely and comfortably.&lt;/p&gt;

&lt;p&gt;A while back I gave a talk on making WooCommerce accessible. This post expands on that talk with actionable steps you can implement today.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Accessibility in E-Commerce Matters
&lt;/h2&gt;

&lt;p&gt;Inaccessible websites create real barriers. Users with disabilities can struggle with navigation, form completion, and ultimately abandon a purchase entirely. Accessible design isn't just a legal requirement in many regions. It's an opportunity to reach more customers and create a smoother experience for everyone.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Start With an Accessibility-Ready Theme
&lt;/h2&gt;

&lt;p&gt;Your theme is your foundation. Starting with one built for accessibility means fewer fixes later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgc0rwp7p9315qtj33qbw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgc0rwp7p9315qtj33qbw.png" alt="WordPress Add Themes screen with Feature Filter open, showing E-Commerce and Accessibility Ready filters checked" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to find one:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your WordPress dashboard&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Appearance &amp;gt; Themes &amp;gt; Add New &amp;gt; Feature Filter&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Accessibility Ready&lt;/strong&gt; and &lt;strong&gt;E-commerce&lt;/strong&gt;, then apply&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recommended:&lt;/strong&gt; Storefront, a WooCommerce-friendly theme optimised for accessibility&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Once installed, test it with:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WAVE&lt;/strong&gt; checks structural issues and colour contrast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Equalize Digital Accessibility Checker&lt;/strong&gt; tests directly in your WordPress dashboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NVDA or VoiceOver&lt;/strong&gt; lets you experience your site the way assistive technology users do&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Structure Your Headings Properly
&lt;/h2&gt;

&lt;p&gt;Headings guide screen reader users through your page. A broken heading structure is one of the most common accessibility failures on WooCommerce stores.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best practice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One &lt;code&gt;H1&lt;/code&gt; per page (usually the page title)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;H2&lt;/code&gt; for main sections, &lt;code&gt;H3&lt;/code&gt; for subsections&lt;/li&gt;
&lt;li&gt;Never skip levels. Don't jump from &lt;code&gt;H1&lt;/code&gt; to &lt;code&gt;H3&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example for a product page:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;H1: Product Title
H2: Product Description
H3: Product Specifications
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Write Descriptive Link Text
&lt;/h2&gt;

&lt;p&gt;Vague link text like "Click here" or "Learn more" tells screen reader users nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instead:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ "Click here"&lt;/li&gt;
&lt;li&gt;✅ "Learn more about our accessible designs"&lt;/li&gt;
&lt;li&gt;✅ "View product details for Coral V-neck T-shirt"&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Optimise for Keyboard Navigation
&lt;/h2&gt;

&lt;p&gt;Not everyone uses a mouse. All interactive elements including buttons, forms, and modals must be accessible via the &lt;code&gt;Tab&lt;/code&gt; key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick test:&lt;/strong&gt; Navigate your entire store using only &lt;code&gt;Tab&lt;/code&gt; and &lt;code&gt;Shift+Tab&lt;/code&gt;. Can you add a product to cart and complete checkout without touching your mouse?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation tip:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Make custom elements keyboard accessible --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;tabindex=&lt;/span&gt;&lt;span class="s"&gt;"0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Add to Cart&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Add ARIA Labels to Icons and Controls
&lt;/h2&gt;

&lt;p&gt;Icons without visible text are invisible to screen readers without ARIA labels.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/cart"&lt;/span&gt; &lt;span class="na"&gt;aria-label=&lt;/span&gt;&lt;span class="s"&gt;"Shopping Cart"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;i&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"icon-cart"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the same to social media icons, wishlist buttons, and any custom controls.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Write Meaningful Alt Text for Images
&lt;/h2&gt;

&lt;p&gt;Every product image needs alt text that describes its purpose, not just the object.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ "T-shirt"&lt;/li&gt;
&lt;li&gt;✅ "Coral-coloured V-neck T-shirt made from soft fabric, ideal for casual wear"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For purely decorative images, use an empty attribute so screen readers skip them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"divider.png"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  7. Simplify Your Checkout Forms
&lt;/h2&gt;

&lt;p&gt;Checkout is where accessibility failures cost you sales. Every field should be clearly labelled and logically grouped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Label every field explicitly — don't rely on placeholder text alone&lt;/li&gt;
&lt;li&gt;Group related fields under clear headings like "Billing Information" and "Shipping Information"&lt;/li&gt;
&lt;li&gt;Remove unnecessary fields. Fewer fields means less friction for everyone&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8. Choose an Accessible Payment Gateway
&lt;/h2&gt;

&lt;p&gt;Your payment gateway needs to be as accessible as the rest of your store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to look for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full keyboard navigation support through the entire payment flow&lt;/li&gt;
&lt;li&gt;Clear field labels, not just placeholder text that disappears on focus&lt;/li&gt;
&lt;li&gt;Accessible error messages using ARIA live regions&lt;/li&gt;
&lt;li&gt;Audio CAPTCHA alternatives if CAPTCHA is required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PayPal and Stripe are generally strong here. Whatever gateway you use, test it with a screen reader before going live.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Avoid JavaScript Traps
&lt;/h2&gt;

&lt;p&gt;Modals and pop-ups are common sources of keyboard traps — where users get stuck and can't navigate out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick checklist:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can modals be closed with the &lt;code&gt;Esc&lt;/code&gt; key?&lt;/li&gt;
&lt;li&gt;Can users tab through modal content and return to the main page?&lt;/li&gt;
&lt;li&gt;Is there a visible close button?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  10. Keep Layout and Navigation Consistent
&lt;/h2&gt;

&lt;p&gt;Predictable layouts reduce cognitive load, especially for users with cognitive disabilities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep your navigation bar in the same position on every page&lt;/li&gt;
&lt;li&gt;Use consistent button styles and placement for key actions like "Add to Cart"&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  11. Test Regularly
&lt;/h2&gt;

&lt;p&gt;Accessibility breaks with updates. Build testing into your workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended tools:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://wave.webaim.org/" rel="noopener noreferrer"&gt;WAVE&lt;/a&gt; for structural and contrast issues&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.deque.com/axe/" rel="noopener noreferrer"&gt;Axe&lt;/a&gt; for browser-based testing&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://equalizedigital.com/" rel="noopener noreferrer"&gt;Equalize Digital Accessibility Checker&lt;/a&gt; for WordPress dashboard testing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NVDA&lt;/strong&gt; is a free screen reader for Windows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VoiceOver&lt;/strong&gt; is a built-in screen reader on macOS and iOS&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Accessibility is an Ongoing Commitment
&lt;/h2&gt;

&lt;p&gt;Making your WooCommerce store accessible benefits everyone. Better navigation, improved SEO, and a wider customer base. More importantly, it ensures that no one hits a barrier trying to complete a purchase on your store.&lt;/p&gt;

&lt;p&gt;Simple design choices can make a world of difference. Accessibility isn't just about meeting standards. It's about respecting your customers.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Femi is a Technical Support Engineer and community organiser based in South Africa, with 9+ years in the WordPress and WooCommerce ecosystem. He recently spoke at DevConf 2026 on the State of Digital Accessibility in Africa.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Tags:&lt;/strong&gt; &lt;code&gt;#wordpress&lt;/code&gt; &lt;code&gt;#woocommerce&lt;/code&gt; &lt;code&gt;#accessibility&lt;/code&gt; &lt;code&gt;#webdev&lt;/code&gt;&lt;/p&gt;

</description>
      <category>a11y</category>
      <category>wordpress</category>
      <category>woocommerce</category>
    </item>
  </channel>
</rss>
