WordPress. J’ai une esperluette (&) dans mes numéros de page !

Logo WordPressProblématique

Comme je suis d’un soin maniaque, je mets à jour à chaque fois que WordPress me le propose. Et depuis la version 3.8 (même la toute dernière la 3.8.3), il se produit un truc étrange.

Dans le bas de mes pages, j’ai une pagination générée par paginate_links. Or que vois-je effaré ? Si la page dépasse la valeur 1000, WordPress me met comme séparateur de milliers un ‘&’ : en gros, cette année, nous serions en 2&014. Pas beau, n’est-ce pas ? En outre, ça fait hurler le contrôle de conformité HTML5 de validator.w3.org

Qu’est-ce qui se passe-t-il donc ? Mes amis, je crois bien qu’il s’agit d’un bug WordPress. Il faut donc le corriger. Et comment ?

Solution

paginate_links est défini dans wp-includes/general-template.php. Il faut donc modifier ce fichier.

En version 3.8.3 de WordPress, la ligne à corriger est la ligne 2038 (elle pourra changer dans les version suivantes) dont le code est :

$n_display = number_format_i18n($n);

Cette fonction number_format_i18n est définie dans wp-includes/functions.php. Elle prend par défaut un séparateur de milliers a priori erroné. Je n’ai pas envie de la modifier car j’ignore le risque qu’elle fait courir. Il me semble préférable de la remplacer localement par une fonction plus standard de PHP : number_format.

$n_display = number_format($n,0,““,““);

Ce qui signifie : 0 décimale,““ (chaîne vide) comme séparateur décimal, ““ (idem) comme séparateur de milliers. Ce qui est assez logique pour un numéro de page. Et ça marche !

Je laisse  number_format_i18n sévir ailleurs mais désormais je me méfierai.

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

Pour en savoir plus, quelques livres sur WordPress

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *