Tilgængelighed på WooCommerce: typiske WCAG-fejl og hvem der retter dem
Opdateret 10. september 2026
WooCommerce er WordPress med en butik ovenpå. Temaet, page builderen og de 20–40 plugins bestemmer tilgængeligheden mere end WooCommerce selv, og det er der, vi finder fejlene.
Hvad loven kræver
Sælger shoppen til private forbrugere i Danmark, er den en e-handelstjeneste efter tilgængelighedsloven (LOV nr. 801/2022), som har været i kraft siden 28. juni 2025. Kravet er WCAG 2.1 AA via EN 301 549, en offentliggjort tilgængelighedserklæring og dokumentation, som Sikkerhedsstyrelsen kan bede om at se. Mikrovirksomheder (under 10 årsværk og under 2 mio. EUR i omsætning eller balance) er undtaget. WooCommerce og WordPress er open source uden en leverandør, der hoster tjenesten for jer, så ansvaret ligger entydigt hos jer og det bureau, der drifter shoppen. Til gengæld kan alt rettes: der er ingen låst checkout.
Det finder vi typisk på WooCommerce
WooCommerce-kernens egne skabeloner (produktside, kurv, block-checkout) er sjældent kilden. Fejlene kommer fra temaet (Astra, Flatsome, Storefront, Divi og lignende) og page builderen (Elementor, WPBakery, Gutenberg-blokke), hvor overskriftsniveauer vælges efter udseende, ikonlinks mangler tekst, og farver er sat uden kontrasttjek. Plugins til filtre, sliders, popups, cookiebannere og nyhedsbrev indsætter egen markup med felter uden etiket og gentagne id'er. I checkout er det typisk betalingsudbyderens iframe og adressehjælp-plugins, der tilføjer felter uden label. Ældre temaer mangler <main> og andre landemærker.
På WooCommerce kommer flest fund fra temaet, page builderen og plugins; WooCommerce-kernens skabeloner er sjældent problemet.
image-alt1.1.1 Ikke-tekstbaseret indhold · ABilleder uden alt-attribut har intet tekstalternativ. Skærmlæserbrugere hører enten filnavnet (fx 'IMG_2043.jpg') eller ingenting og går glip af indholdet — fx et produktbillede, et kampagnebanner eller et betalingskort-ikon.
Giv alle <img> en alt-attribut. Beskriv billedets indhold eller funktion i én kort sætning (uden 'billede af'). Er billedet rent dekorativt (rammer, skygger, spacer-gifs), så brug tom alt="" — så springer skærmlæseren det over. Et billede i et link skal beskrive linkets mål, ikke billedet. I webshops: produktbilleder bør nævne produktnavn og variant ('Sort uldfrakke, model Nora, set forfra'), og logoer bør have firmanavnet som alt.
Før
<img src="/img/frakke-nora-sort.jpg">Efter
<img src="/img/frakke-nora-sort.jpg" alt="Sort uldfrakke, model Nora, set forfra"> <img src="/img/border.gif" alt="">color-contrast1.4.3 Kontrast (minimum) · AATekstens kontrast mod baggrunden er under 4,5:1 (3:1 for stor tekst ≥ 18 pt eller ≥ 14 pt fed). Brugere med nedsat syn eller farvesynsdefekt — og alle på en mobil i sollys — kan ikke læse teksten. Rammer typisk lysegrå hjælpetekst, placeholder-tekst, priser på farvet baggrund og hvid tekst på pastelfarvede knapper.
Mørkn tekstfarven eller lysn baggrunden, til kontrasten er mindst 4,5:1 (3:1 for stor tekst). axe angiver den målte kontrast og de præcise farver i fejlbeskrivelsen. Ret farven i design-tokens/CSS-variabler frem for pr. element, så det slår igennem overalt. Tjek også hover-, fokus- og disabled-tilstande (disabled-tekst er undtaget, men bør stadig kunne læses).
Før
.hint { color: #9ca3af; background: #ffffff; } /* 2,5:1 */Efter
.hint { color: #4b5563; background: #ffffff; } /* 7,6:1 */label4.1.2 Navn, rolle, værdi · AFormularfeltet har ingen etiket (label). Skærmlæserbrugere hører 'redigér tekst' uden at vide, hvad de skal skrive — typisk søgefelter, nyhedsbrevsfelter, rabatkode og felter i checkout, hvor kun en placeholder er brugt.
Kobl en synlig <label> til feltet med for/id. Placeholder tæller ikke som etiket (den forsvinder ved indtastning og har ofte for lav kontrast). Kan der ikke være synlig tekst (fx søgefelt med ikon), så brug aria-label.
Før
<input type="email" placeholder="Din e-mail">Efter
<label for="nyhedsbrev-email">E-mail</label> <input id="nyhedsbrev-email" type="email" autocomplete="email">heading-order1.3.1 Information og relationer · AOverskriftsniveauer springer (fx h2 → h4). Skærmlæserbrugere, der navigerer via overskrifter, mister overblikket over sidens struktur.
Brug overskriftsniveauer som en disposition: h1 for sidens emne, h2 for hovedafsnit, h3 for underafsnit. Vælg aldrig niveau efter udseende — styr størrelsen med CSS i stedet.
Før
<h2>Beskrivelse</h2> <h4>Materiale</h4>Efter
<h2>Beskrivelse</h2> <h3>Materiale</h3>landmark-one-main1.3.1 Information og relationer · A2.4.1 Spring over blokke · ASiden har ingen <main>-landemærke. Skærmlæserbrugere bruger 'spring til hovedindhold' via main-landemærket for at komme forbi header og navigation.
Pak sidens primære indhold (ikke header, nav og footer) i ét <main>-element — typisk i sideskabelonen.
Før
<div id="content">…</div>Efter
<main id="content">…</main>duplicate-id4.1.1 Parsing · ASamme id bruges på flere elementer. Koblinger via id (label for, aria-describedby, ankerlinks) rammer så det forkerte element.
Gør id'er unikke pr. side. Fejlen opstår typisk, når en komponent (produktkort, modal, formular) gentages med et fast id — generér id'et ud fra produkt-/komponent-id i stedet.
Før
<div id="product"><…></div> <div id="product"><…></div>Efter
<div id="product-1042"><…></div> <div id="product-1043"><…></div>
Sådan tilføjer I sitet i Nordally
- Base-URL: shoppens domæne, fx
https://www.dinbutik.dk. - Sitemap uden SEO-plugin: WordPress genererer siden version 5.5 selv
/wp-sitemap.xmlsom et sitemap-index med underfiler for indlæg, sider, produkter og kategorier. Skriv den fulde adresse i feltet, da/sitemap.xmlikke nødvendigvis findes på et rent WordPress-site. - Sitemap med Yoast SEO eller Rank Math: begge slår kernens sitemap fra og lægger deres eget indeks på
/sitemap_index.xml. All in One SEO bruger/sitemap.xml. Er I i tvivl, så brug den adresse, I har indsendt i Google Search Console. - Uden sitemap: har I slået sitemaps fra i pluginet, eller er 'Synlighed for søgemaskiner' sat til at bede søgemaskiner om at holde sig væk under Indstillinger → Læsning, svarer sitemappet ikke, og Nordally scanner kun forsiden. Slå det til igen, så produkt- og kategorisider kommer med.
- Nordally følger kun URL'er på sitets eget domæne. Kører et sprog på et andet domæne, tilføjes det som et separat site.
Hvem retter hvad
| Fejl | Kan shopejeren rette selv? | Kræver udvikler/leverandør? |
|---|---|---|
| Alt-tekster på billeder | Ja, i mediebiblioteket og på produktbilledet | Nej |
| Kontrast i temaets farver | Delvist: globale farver i Customizer eller temaets indstillinger | Ja, hvis farverne er hardcodet i temaet eller child-temaet |
| Overskriftsniveauer i page builder | Ja: vælg niveau (H2/H3) i blokken og styr udseendet separat | Kun hvis temaets skabeloner selv sætter forkerte niveauer |
| Manglende <main> og landemærker | Nej | Temaudvikler eller nyt tema |
| Formularfelter uden etiket (filtre, nyhedsbrev, tilføjelser i checkout) | Delvist: udskift pluginet | Plugin-leverandør eller udvikler |
| Betalingsvindue (iframe fra betalingsudbyder) | Nej | Betalingsudbyderen |
Hvad automatisk test ikke finder
Om checkout kan gennemføres med tastatur alene, om fokus flyttes rigtigt, når kurven opdateres via AJAX, om alt-teksterne giver mening, og om fejlbeskeder ved manglende felter bliver læst op, kan en scanner ikke afgøre. Det samme gælder karruseller og popups, der åbner uden varsel. Gå det igennem med tjeklisten i manuel gennemgang, så resultatet kan indgå i erklæringen.
Tjek én side af jeres WooCommerce-shop nu
Indsæt en produktside eller en kategoriside, og se de automatisk målbare fund med selektor og dansk vejledning. Ingen konto, ingen installation. Tjek én side gratis.
Spørgsmål og svar
Kan vi bruge en tilgængeligheds-app (WordPress-plugin) i stedet for at rette WooCommerce-shoppen?
Nej. En overlay-widget lægger et script oven på siden i kundens browser; temaet, produktkortene og checkout er uændrede, og det er dem, tilsynet og kunderne møder. Widgeten dokumenterer heller ikke noget over for Sikkerhedsstyrelsen. Ret fejlene i koden og indholdet, og brug eventuelt en widget som tilvalg for brugerindstillinger. Se overlay-widget eller scanner.
Løser en opdatering af WooCommerce og temaet fejlene?
Nogle. WooCommerce arbejder løbende med tilgængelighed i kernens skabeloner, og temaer retter kendte fejl i nye versioner. Men opdateringer ændrer også markup, og et nyt plugin kan indføre nye fejl. Scan efter hver opdatering, så I ser, hvad der forsvandt, og hvad der kom til.
Vores bureau siger, at temaet er 'WCAG-ready'. Er det nok?
Det er et godt udgangspunkt, ikke en dokumentation. Et tema kan være bygget korrekt og stadig ende med fejl, når indhold, farver, page builder-elementer og plugins lægges ovenpå. Tjek påstanden med en scan af en produktside, og bed bureauet om, at nul automatisk målbare fund er en del af afleveringen.
Kilder
Nordally hjælper med compliance og giver ikke juridisk rådgivning. Om jeres virksomhed er omfattet, og om jeres løsning er dækkende, er en vurdering, I selv eller en rådgiver må tage.