Validation et exclusion

Bon, j’ai partiellement résolu mes problèmes dus au passage à Php 5.3.2, et assez facilement.

Déjà, je me suis aperçu que mes pages n’étaient pas valides W3C pour le XHTML 1.1, et ceux à cause des captions, ces boites qui permettent d’insérer une image et de l’afficher, avec son commentaire, dans un joli cadre autour. La raison est simple, ces boites sont en fait des balises <div> insérées dans un paragraphe ; hors les spécifications d’XHTML 1.1 n’autorisent pas à mettre des <div> dans des <p>, d’où une erreur. Deux solutions à ça :

  • Mode bourrin dégueulasse : modifier à la main la fonction qui gère les captions. elle est trouve dans /wp-includes/media.php, il suffit de changer le <div …> en <span …>, et c’est valide ! Sauf qu’il faudra à nouveau modifier le fichier à chaque mise-à-jour de WordPress… bref, ça marche, mais c’est pas génial.
  • Mode intelligent : on surcharge le shortcode. Une API de WordPress qui permet de créer facilement et rapidement des… shortcodes, hé oui : http://codex.wordpress.org/Shortcode_API qui gère les captions. Ajoutez le code suivant dans le fichier de fonctions de votre thème (/wp-content/votrethème/functions.php) :
function W3CValidCaption($attr, $content = null) {

   extract(shortcode_atts(array(
       'id'    =&gt; '',
       'align' =&gt; 'alignnone',
       'width' =&gt; '',
       'caption' =&gt; ''
   ), $attr));

    if ( 1 &gt; (int) $width || empty($caption) )
       return $content;

   if ( $id ) $id = 'id="' . esc_attr($id) . '" ';

   return '<span>'
   . do_shortcode( $content ) . '<span class="wp-caption-text">' . $caption . '</span></span>';
}

add_shortcode('caption', 'W3CValidCaption');
add_shortcode('wp-caption', 'W3CValidCaption');

C’est une simple copie de la fonction img_caption_shortcode() du fichier /wp-includes/media.php, avec les retouches permettant la validation : le <div> devient un <span>, et du coup le <p> contenant le texte devient également un <span>. Si ce texte apparait à gauche ou à droite et pas au centre sous l’image comme auparavant, pensez à éditer la feuille de style de votre thème en changeant text-align: left; ou text-align: right; en text-align: center;. Voilà pour la validation 🙂

Reste l’exclusion, ou comment ne pas afficher les articles de certaines catégorie sur la page d’accueil. C’est ce que faisait jusqu’à maintenant le plugin Ace dont j’ai parlé la dernière fois, mais comme il ne fonctionne plus depuis la mise-à-jour de Php, j’ai du trouver autre chose. Et finalement, j’aurais du commencer directement par là puisque le Codex WordPress apporte une réponse efficacePar ici : http://codex.wordpress.org/The_Loop#Exclude_Posts_From_Some_Category, il suffit d’ajouter :


(-xx et -yy correspondent aux ID des catégories à ne pas afficher)

Juste avant


Dans votre fichier index de thème /wp-content/votrethème/index.php, et le tour est joué !

Publié par Charlie

Être humain depuis 1986, développeur web, designer et photographe, je code pour le Web depuis 2000 et pour WordPress depuis 2008. Aventure, Histoire, sciences, musique, café ou personnages forts en caractère et dotés d'un nez en tout point remarquable sont parmi mes passions les plus dévorantes. Indépendant depuis 2010 je travaille avec des gens formidables dans le monde entier, de la Californie à l'Europe en passant par l'Australie et l'Asie. D'autres détails croustillants ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

*