Quando escrevi um tema, certifiquei-me de que estava em conformidade com o XHTML 1.1 e o CSS 2.1. Então eu adicionei plugins e o tema não é mais compatível com o XHTMl 1.1. Então eu usei a fonte da API do Google no meu CSS e é mais compatível com CSS 2.1.
Existe uma maneira que eu possa manter a conformidade sem se livrar dos plugins, fonte etc ou devo apenas ignorar os erros de validação?
Correção, seu tema ainda estava em conformidade com o XHTML 1.1 e o CSS 2.1, mas os plug-ins que você adicionou injetaram código adicional quenão eracompatível.
Infelizmente, não há maneira fácil de manter a conformidade se você estiver usando plug-ins. O melhor que você pode fazer é validar seu tema e todas as marcações pelas quais é pessoalmente responsável, depois esperar que outros desenvolvedores tenham dedicado tempo para validar seu próprio trabalho.
A alternativa é muito mais trabalho de sua parte - você ainda pode usar a funcionalidade principal dos plug-ins, mas não permitir que eles imprimam any markup no navegador. Adicione sua própria camada personalizada que solta tudo o que o plug-in toca e construa seu próprio buffer de saída. Esta é a formaonlyvocê terá controle sobre o estilo de marcação sendo enviado para o navegador.
Vários plug-ins estão começando a usar o HTML 5 ... outros estão tentando usar o CSS3. Se você instalar esses plug-ins e não tomar medidas para higienizar e validar sua saída, seu site deixará de validar corretamente.
Cada plugin vai gerar o código que deseja gerar e parte dele não será compatível com XHTML 1.1. A única maneira razoável de corrigir isso seria auditar cada um deles e modificar os ofensores ou fazer com que o desenvolvedor modifique ou use suas modificações como um patch.
Alternativa você poderia tentar escrever um filtro para limpá-lo, mas tentar pegar todo o caso especial parece ser uma versão do meu pesadelo pessoal e também afetaria o desempenho para o benefício dudious.
Você tem um cliente/chefe que quer isso, ou é apenas algo assumido como um " Nice-to-have ?" (Sim, há alguns que se sentem fortemente sobre isso. Eu, no entanto, não sou um desses.)
Dito isso, o XHTML está perdendo seu status " fair-haired child " na web; mesmo Tim Berners-Leedito assim em 2006:
Algumas coisas são mais claras com retrospectiva de vários anos. É necessário evoluir HTML incrementalmente. A tentativa de fazer o mundo mudar para XML, incluindo cotações em torno de valores de atributos e barras em tags vazias e namespaces de uma só vez, não funcionou. O grande público gerador de HTML não se mexeu, em grande parte porque os navegadores não reclamaram. Algumas grandes comunidades mudaram e estão aproveitando os frutos de sistemas bem formados, mas não todos. É importante manter o HTML incrementalmente, bem como continuar a transição para um mundo bem formado e desenvolver mais poder nesse mundo.
Você também pode querer ler HTML5 é muito mais fácil de escrever do que XHTML 1.0. no StackOverflow. Aqui está o resumo deles:
Apenas na sintaxe, quando você usa HTML5, você acaba com uma marcação mais limpa e mais fácil de ler que sempre invoca o modo de padrões. Quando você usa XHTML 1.0 (servido como text/html), você está especificando um monte de crud (a fim de validar contra um dtd de baixa qualidade) que o navegador fará automaticamente.
A conformidade com os padrões não garante que o seu site funcionará em todos os navegadores. Ignore a conformidade com os padrões e concentre-se nos testes com o maior número possível de navegadores.
Você pode armazenar em buffer toda a saída do seu site e depois organizá-lo em HTML compatível. O melhor de tudo é que isso pode ser feito totalmente automatizado:
Você pode ativar o buffer de saída no init do tema ou nos ganchos relacionados (por exemplo, * setup_theme * hook).
Aqui estão dois fragmentos de código. A primeira mostra que você inicia o buffer de saída e lê o buffer mais tarde:
<?php
ob_start();
?>
…
<?php
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer);
echo $tidy;
?>
O segundo mostra algumas das opções de configuração em ação:
/* Tiny Configuration */
$config["clean"] = true;
$config["hide-comments"] = true;
$config["output-xhtml"] = true;
$config["indent-spaces"] = 2;
$config["tab-size"] = 2;
$config["wrap"] = 0;
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer, $config);
echo $tidy;
Eu aposto que já existe um plugin wordpress para fazer isso. Vamos ver: