Problemas de acessibilidade do WordPress que estão fazendo com que sites sejam processados ​​em 2026


O WordPress alimenta 43% da web. São mais de 800 milhões de sites — e a maioria deles tem problemas de acessibilidade que violam os padrões WCAG 2.1 AA.

Os processos judiciais da ADA contra websites ultrapassaram os 6.000 em 2025 e estão a caminho de ultrapassar esse número em 2026. Os alvos não são apenas empresas. Escritórios de advocacia estão apresentando cartas de demanda contra pequenas empresas, lojas WooCommerce, clínicas de saúde e prestadores de serviços locais – a maioria deles executando WordPress.

Em nossa análise de 1.025 sitesas falhas no contraste de cores foram o problema mais comum, aparecendo em 58% dos sites. Texto alternativo ausente, texto de link quebrado e pontos de toque subdimensionados seguiram de perto. O padrão é consistente em todos os setores. E os sites WordPress não são exceção.

Este artigo analisa as falhas de acessibilidade mais comuns específicas do WordPress, por que elas acontecem e exatamente como corrigi-las.

Por que os sites WordPress lutam com acessibilidade

O principal problema não é o WordPress em si – a plataforma suporta desenvolvimento acessível. O problema é o ecossistema: temas criados para apelo visual, construtores de páginas que geram marcações inacessíveis e plug-ins que injetam componentes não compatíveis sem aviso prévio.

A maioria dos desenvolvedores WordPress herda esses problemas sem saber que eles existem.

1. Falhas no contraste de cores

Este é o problema número 1 de acessibilidade na web, e os temas do WordPress são a fonte primária.

Por que isso acontece

Os designers de temas escolhem paletas de cores pela estética, não pelas taxas de contraste. Texto cinza claro em fundos brancos, links azuis claros em fundos claros e texto de espaço reservado em estilo marca d’água são padrão em temas populares – e todos falham nas WCAG 1.4.3, que requer uma taxa de contraste de pelo menos 4,5:1 para texto normal e 3:1 para texto grande.

Como verificar

Use o DevTools do seu navegador. No Chrome, inspecione qualquer elemento de texto, abra o painel Estilos e clique na amostra de cor. O Chrome exibirá a taxa de contraste e a sinalizará como falha se estiver abaixo do limite WCAG.

Para uma verificação em todo o site, execute uma verificação completa nas WCAG 1.4.3 – muitas ferramentas de verificação sinalizam isso automaticamente.

Como consertar

Substitua as cores padrão do seu tema em style.css ou o personalizador do seu tema. Para o corpo do texto, procure uma taxa de contraste acima de 7:1 para melhores práticas, embora 4,5:1 seja o mínimo das WCAG.

/* Example: fixing low-contrast body text */
body {
  color: #333333; /* contrast ratio ~12.6:1 on white */
}

/* Example: fixing low-contrast placeholder text */
input::placeholder {
  color: #767676; /* minimum passing ratio on white */
}

Se estiver usando um tema de bloco, você poderá controlar as cores por meio de theme.json:

{
  "settings": {
    "color": {
      "palette": (
        {
          "slug": "body-text",
          "color": "#333333",
          "name": "Body Text"
        }
      )
    }
  }
}

2. Texto alternativo ausente ou decorativo nas imagens

O WordPress facilita a adição de texto alternativo – e igualmente fácil de ignorá-lo. O resultado: milhares de imagens com atributos alt vazios ou, pior, texto alternativo baseado em nome de arquivo, como IMG_20240312_143022.jpg.

Por que isso acontece

Ao fazer upload de imagens na Biblioteca de Mídia, o campo de texto alternativo é opcional e geralmente deixado em branco. Construtores de páginas como Elementor e Divi às vezes preenchem automaticamente o texto alternativo com o título da imagem, que geralmente é um nome de arquivo ou rótulo genérico – não uma descrição significativa.

Requisito WCAG

WCAG 1.1.1 (Nível A) exige que todas as imagens não decorativas tenham uma alternativa de texto que transmita as mesmas informações que a imagem.

Como consertar

Para imagens decorativas que não transmitem nenhuma informação, use um atributo alt vazio:

<img src="divider.png" alt="" role="presentation">

Para imagens informativas, escreva um texto alternativo descritivo que transmita o conteúdo ou função da imagem:


<img src="team-photo.jpg" alt="photo">


<img src="team-photo.jpg" alt="WCAGsafe team of five developers gathered around a conference table reviewing accessibility reports">

Para auditar sua biblioteca de mídia em massa, instale um plugin como “Wp Accessibility” ou consulte seu banco de dados diretamente:

SELECT ID, post_title, guid 
FROM wp_posts 
WHERE post_type = 'attachment' 
AND post_mime_type LIKE 'image/%'
AND ID NOT IN (
  SELECT post_id FROM wp_postmeta WHERE meta_key = '_wp_attachment_image_alt' AND meta_value != ''
);

Isso retorna todas as imagens sem texto alternativo definido em sua biblioteca.

Os menus de navegação do WordPress são notoriamente problemáticos para usuários de teclado e leitores de tela. Menus suspensos que abrem apenas ao passar o mouse, estados de foco ausentes e pontos de referência de navegação não rotulados são as falhas mais comuns.

Por que isso acontece

A maioria dos temas do WordPress implementa navegação suspensa apenas com estados de foco CSS – que são inacessíveis para usuários apenas de teclado que não podem acionar :hover. Além disso, os temas raramente adicionam aria-expanded ou aria-haspopup atributos para alternar o menu.

Requisito WCAG

WCAG 2.1.1 requer que todas as funcionalidades sejam operáveis ​​via teclado. WCAG 4.1.2 exige que os componentes interativos tenham funções e estados ARIA apropriados.

Como consertar

Adicione suporte de teclado aos seus menus suspensos. Se você estiver usando um tema personalizado, modifique seu navigation.js:


document.querySelectorAll('.menu-item-has-children > a').forEach(function(link) {
  link.setAttribute('aria-haspopup', 'true');
  link.setAttribute('aria-expanded', 'false');

  link.addEventListener('click', function(e) {
    const expanded = this.getAttribute('aria-expanded') === 'true';
    this.setAttribute('aria-expanded', !expanded);
    e.preventDefault();
  });

  
  link.addEventListener('keydown', function(e) {
    if (e.key === 'Escape') {
      this.setAttribute('aria-expanded', 'false');
      this.focus();
    }
  });
});

Certifique-se também de que seu ponto de referência de navegação esteja devidamente identificado:

<nav aria-label="Main navigation">
  
nav>

Se você tiver vários



Source link