Diije

Autoriser l’emploi de HTML dans les descriptions de catégories

Ce petit hack m’a été inspiré par une discussion sur le forum veille SEO, lancé par Hervé.

Dans sa configuration de base, WordPress n’autorise l’emploi que de quelques balises HTML seulement dans les descriptions des catégories (a, strong notamment). Cependant, dans nos réflexions de SEO, on apprécie souvent de pouvoir travailler la description des catégories, ne serait-ce que pour limiter le duplicate content. Et pour cela, on aimerait bien avoir la possibilité d’utiliser d’autres balises HTML.

Un petit bout de code à placer dans le fichier functions.php de votre thème permet de régler ce léger problème :

$filters = array('term_description','category_description','pre_term_description');
foreach ( $filters as $filter ) {
    remove_filter($filter, 'wp_filter_kses');
    remove_filter($filter, 'strip_tags');
} 

Un peu d’explications : WordPress considère les catégories comme des terms, traités de la même façon que les tags ou les taxonomies. Quand on crée ou modifie une catégorie, elle est donc soumise aux mêmes règles que n’importe quel terme. Dans des termes un peu plus techniques, les filtres term_description et pre_term_description s’appliquent de la même façon que category_description, au moment où la description est enregistrée en base de données.
Pour pousser la réflexion un peu plus loin, il suffirait d’ajouter les filtres adéquats dans l’array $filters pour pouvoir également utiliser du HTML dans les descriptions de tags ou de taxonomies.

Quant aux filtres que nous retirons, <a href="http://codex.wordpress.org/Function_Reference/wp_filter_kses">wp_filter_kses</a> fait appel à la librairie kses pour retirer une bonne partie des balises HTML présentes dans une chaîne de caractères, en ne laissant que certaines balises autorisées (strong, a, em …).
Enfin, la fonction PHP <a href="http://php.net/manual/fr/function.strip-tags.php">strip_tags</a> retire notamment le code PHP et JavaScript. Nous avions vu l’utilisation de cette fonction adaptée pour WordPress lorsque nous voulions supprimer le HTML dans les commentaires.

Avec ces 5 lignes de code, nous pouvons maintenant ajouter toutes les balises que nous voulons dans les descriptions de nos catégories. Faites vous plaisir !

Ce petit hack illustre encore une fois les larges possibilités offertes par WordPress en quelques lignes de code. Pour les plus pressés ou pour ceux qui ne souhaitent pas se pencher dans le code, sachez qu’il existe des plugins qui vous permettront de faire la même chose et ajouteront un éditeur Wysiwyg pour vous faciliter la rédaction des descriptions. N’étant pas un fervent utilisateur de plugins, je vous laisse chercher 🙂