WordPress + SandBox : erreur de validation sur les archives de catégorie

Lors de la réalisation d’un thème pour WordPress basé sur SandBox, j’ai remarqué que la page des archives de catégories ne passait pas la validation HTML lorsque la description de catégorie n’était pas renseignée à cause d’une balise de paragraphe qui était fermée alors qu’elle n’avait jamais été ouverte (paragraphe « nul »).

La faute en incombe au test réalisé à la ligne 7 du fichier category.php :

<div class="archive-meta"><?php if ( !(''== category_description()) ) : echo apply_filters('archive_meta', category_description()); endif; ?></div>

En plus de retourner un div totalement inutile en l’absence d’une description de catégorie vu qu’il est inséré avant le test, ce code ne fonctionne pas car si la description n’est pas renseignée, WordPress ne renvoie pas un résultat vide à la fonction category_description() mais va l’interpréter et renvoyer le code suivant : </p>\n

Autant dire que ce n’est pas vraiment esthétique et encore moins valide au niveau HTML.

Pour résoudre ce problème, il vous suffit de remplacer le code incriminé par le suivant :

<?php if ( !("</p>\n" == category_description()) ) : ?>

<div class="archive-meta"><?php echo apply_filters('archive_meta', category_description()); ?></div>

<?php endif; /* if ( !("</p>\n" == category_description()) ) */ ?>

Avec ce bout de code, si la description de la catégorie n’est pas renseignée vous n’aurez ni erreur ni div vide inutile dans votre page et le code sera valide. Bien sûr la description s’affichera également correctement si elle a été renseignée.

Continuez votre lecture