Wordpress et le double dash (--)

27 juil. 2012

Je profite d’une « erreur » sur le tutoriel d’installation de CyanogenMod 9 sur la tablette Asus Transformer pour faire ce petit article…

J’ai mis « erreur » entre guillemet pour une simple raison : en soi, il n’y en a pas (d’erreur). Je m’explique : un des lecteurs rencontrait une erreur, en faisant un simple copié/collé de la commande, et obtenait une erreur là où moi je n’en avais pas, alors que j’avais vérifié que la commande de l’article était correcte.

En fait, c’est WordPress qui convertit le double-tiret en un tiret un peu plus long, comme on peut trouver dans les livres, ou comme le font la plupart des traitements de texte.

Le seul hic, c’est que ça « casse » certains bouts de code ou de commandes shell. J’ai corrigé ce matin ce problème « à la va-vite », en suivant la célèbre méthode de la RACHE : j’ai placé les — gênants entre des balises <code>, ainsi WordPress ne les reformattait plus.

J’ai profité de ma pause de midi pour chercher dans WordPress la fonction qui gère ce truc, afin de l’adapter si besoin. Voici les modifications que j’ai faites :

  • Ouvrez le fichier /wp-includes/formatting.php
  • Trouvez la ligne :
1
$static_characters = array_merge( array( /* '---', ' -- ', '--', ' - ', 'xn&amp;#8211;', '...', '``', '\'\'', ' (tm)' ), $cockney );
  • Modifiez le array comme ceci, en commentant les caractères que l’on ne veut pas modifier :
1
array( /* '---', ' -- ', '--', ' - ', 'xn&amp;#8211;', */ '...', '``', '\'\'', ' (tm)' )
  • La ligne suivante est :
1
$static_replacements = array_merge( array( $em_dash, ' ' . $em_dash . ' ', $en_dash, ' ' . $en_dash . ' ', 'xn--', '&amp;#8230;', $opening_quote, $closing_quote, ' &amp;#8482;' ), $cockneyreplace );
  • Même genre de modifications :
1
array( /* $em_dash, ' ' . $em_dash . ' ', $en_dash, ' ' . $en_dash . ' ', 'xn--', */ '&amp;#8230;', $opening_quote, $closing_quote, ' &amp;#8482;' )
  • Enregistrez

C’est tout bon !

Notez que cette modification est rétroactive, et agira sur tous les articles publiés par le passé, et sur ceux à venir.

Par contre, faites une copie de ce fichier : je suppose qu’en cas de mise-à-jour de WordPress, le formatting.php sera écrasé…