Spring til indhold

Platforme

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 · A

    Billeder 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) · AA

    Tekstens 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 · A

    Formularfeltet 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 · A

    Overskriftsniveauer 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 · A

    Siden 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 · A

    Samme 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.xml som et sitemap-index med underfiler for indlæg, sider, produkter og kategorier. Skriv den fulde adresse i feltet, da /sitemap.xml ikke 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

Hvem retter hvad på WooCommerce
FejlKan shopejeren rette selv?Kræver udvikler/leverandør?
Alt-tekster på billederJa, i mediebiblioteket og på produktbilledetNej
Kontrast i temaets farverDelvist: globale farver i Customizer eller temaets indstillingerJa, hvis farverne er hardcodet i temaet eller child-temaet
Overskriftsniveauer i page builderJa: vælg niveau (H2/H3) i blokken og styr udseendet separatKun hvis temaets skabeloner selv sætter forkerte niveauer
Manglende <main> og landemærkerNejTemaudvikler eller nyt tema
Formularfelter uden etiket (filtre, nyhedsbrev, tilføjelser i checkout)Delvist: udskift pluginetPlugin-leverandør eller udvikler
Betalingsvindue (iframe fra betalingsudbyder)NejBetalingsudbyderen

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.