Comment maintenir la conformité aux normes W3C d'un thème

10

Lorsque j'ai écrit un thème, je me suis assuré qu'il était conforme à XHTML 1.1 et CSS 2.1. Ensuite, j'ai ajouté des plugins et le thème n'est plus compatible avec XHTMl 1.1. Ensuite, j'ai utilisé la police Google API dans mon CSS et elle est plus compatible avec CSS 2.1.

Existe-t-il un moyen de conserver la conformité sans se débarrasser des plugins, de la police, etc. ou dois-je simplement ignorer les erreurs de validation?

James
la source

Réponses:

5

Correction, votre thème était toujours conforme à XHTML 1.1 et CSS 2.1, mais les plug-ins que vous avez ajoutés ont injecté du code supplémentaire qui n'était pas conforme.

Malheureusement, il n'y a pas de moyen facile de maintenir la conformité si vous utilisez des plug-ins. Le mieux que vous puissiez faire est de valider votre thème et tout le balisage dont vous êtes personnellement responsable, puis espérons que d'autres développeurs ont pris le temps de valider leur propre travail.

L'alternative est beaucoup plus de travail de votre part - vous pouvez toujours utiliser la fonctionnalité de base des plug-ins, mais ne leur permettez pas de générer de balisage vers le navigateur. Ajoutez votre propre couche personnalisée qui décroche tout ce que le plug-in touche et créez votre propre tampon de sortie. C'est le seul moyen de contrôler le style de balisage envoyé au navigateur.

Plusieurs plug-ins commencent à utiliser HTML 5 ... d'autres tentent d'utiliser CSS3. Si vous installez ces plug-ins et ne prenez pas de mesures pour désinfecter et valider leur sortie, votre site cessera de valider correctement.

EAMann
la source
1
Merci, je ne pense pas que je veux aller avec l'option de désinfection du HTML. Il se peut que je doive simplement supprimer ces badges W3C de mon site :)
James
Oh pas nécessairement un besoin car vous pouvez automatiquement obtenir la conformité, voir ma réponse ci-dessous. Pas besoin de vous
soucier de la
+1, vous ne pouvez jamais vraiment compter sur le code d'autres personnes, espérons simplement que leur code crache du code HTML valide.
Ben Everard
8

Chaque plugin va générer le code qu'il souhaite générer et certains d'entre eux ne seront pas conformes à XHTML 1.1. La seule façon raisonnable de corriger cela serait de vérifier chacun d'eux et de modifier les contrevenants ou de demander au développeur de modifier ou d'utiliser vos modifications comme correctif.

Alternativement, vous pouvez essayer d'écrire un filtre pour le nettoyer, mais essayer d'attraper tout le cas spécial semble être une version de mon propre cauchemar personnel et cela affecterait également les performances pour un bénéfice douteux.

Avez-vous un client / patron qui veut cela, ou est-ce juste quelque chose supposé être un " bien-avoir "? (Oui, il y en a qui en sont convaincus. Je ne suis cependant pas de ceux-là.)

Cela dit, XHTML perd son statut d '" enfant blond " sur le Web; même Tim Berners-Lee l'a dit en 2006:

Certaines choses sont plus claires avec le recul de plusieurs années. Il est nécessaire d'évoluer HTML de manière incrémentale. La tentative de faire basculer le monde vers XML, y compris les guillemets autour des valeurs d'attribut et les barres obliques dans les balises et les espaces de noms vides, n'a pas fonctionné. Le grand public générant du HTML n'a pas bougé, principalement parce que les navigateurs ne se sont pas plaints. Certaines grandes communautés se sont déplacées et profitent des fruits de systèmes bien formés, mais pas toutes. Il est important de maintenir le HTML de manière incrémentielle, ainsi que de poursuivre la transition vers un monde bien formé et de développer plus de puissance dans ce monde.

Vous pourriez également vouloir lire HTML5 est tellement plus facile à écrire que XHTML 1.0. sur StackOverflow. Voici leur résumé:

Simplement sur le plan de la syntaxe, lorsque vous utilisez HTML5, vous vous retrouvez avec un balisage plus propre et plus facile à lire qui invoque toujours le mode standard. Lorsque vous utilisez XHTML 1.0 (servi comme texte / html), vous spécifiez un tas de crud (afin de valider contre un dtd merdique) que le navigateur fera automatiquement.

MikeSchinkel
la source
C'est mon site Web personnel et le thème lui-même est assez ancien. Le site Web et le thème ne sont que des passe-temps pour moi. Au moment où j'écrirai un nouveau thème, nous aurons probablement un support HTML5 assez bon dans tous les principaux navigateurs. Les plugins vont continuer à générer un balisage non conforme. Je pourrais essayer de nettoyer le délinquant, mais les mises à jour des plugins deviennent plus difficiles. Merci pour les liens.
James
Oui, si ce n'est pas à des fins commerciales ou pour montrer une expertise sur votre capacité à maintenir la conformité XHTML, je ne m'en inquiéterais pas.
MikeSchinkel
J'utilise le site Web et les serveurs comme outils d'apprentissage. Apprendre des choses différentes de ce que je fais au travail.
James
Bummer. Cela ressemble à un travail peu amusant. L'apprentissage est tout ce que je fais, semble-t-il! :)
MikeSchinkel
Oh, le travail est assez amusant, mais surtout le développement basé sur Windows. Cela ressemble plus à une pause de C # :)
James
2

Le respect des normes ne garantit pas que votre site Web fonctionnera dans tous les navigateurs. Ignorez la conformité aux normes et concentrez-vous sur les tests avec autant de navigateurs que possible.


la source
1

Vous pouvez mettre en tampon l'ensemble de la sortie de votre site, puis le ranger dans un code HTML conforme. Le mieux est que cela puisse être fait de manière entièrement automatisée:

Vous pouvez activer la mise en mémoire tampon de sortie sur le thème init ou les hooks associés (par exemple * setup_theme * hook).

Voici deux fragments de code. La première montre que vous démarrez la mise en mémoire tampon de sortie et lisez le tampon plus tard:

<?php
ob_start();
?><?php
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer);
echo $tidy;
?>

La seconde montre certaines des options de configuration en action:

/* 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;

Je parie qu'il existe déjà un plugin wordpress pour le faire. Voyons voir:

hakre
la source
Intéressant. Je vais essayer.
James