En examinant le fichier archive.php du thème Twenty Fifteen on note des nouvelles fonctions pour afficher le titre et la description de la catégorie concernée. Depuis WP 4.1, 6 nouvelles fonctions utilisables dans la création de thème apparaissent dans wp-includes/general-template.php
.
Celle qui nous intéresse ici est
the_archive_description( '', '' );
Cette fonction d’affichage appelle get_the_archive_description()
qui appelle term_description()
via un filtre get_the_archive_description
; ce filtre est intéressant pour traduire le contenu à la volée dans un contexte multilingue…
Surprise ou plutôt comme précédemment, le texte de la description saisie initialement et stocké dans la base est délivré toujours encapsulé de la base html p
.
Cette encapsulation est faite par un filtre créé par défaut add_filter( ‘term_description’, ‘wpautop’) dans le fichier wp-includes/default-filters.php
. Ce filtre est activé dans sanitize_term_field()
du fichier wp-includes/taxonomy.php
parce que pour WP, la donnée est destinée à être afichée (display) d’où ces tags 🙁 .
Il faut donc faire un traitement avant d’appliquer la fonction de traduction :
// new in WP 4.1 - will be incorporated in XL 2.17 add_filter ( 'get_the_archive_description', 'xili_get_the_archive_description' ); function xili_get_the_archive_description ( $description ){ if (!$description) return ''; preg_match('/(.*)/', $description, $match); // ever return description with
with default filter wpautop for display description return '
' . translate( $match[1] , 'twentyfifteen' ) . '
'; }
Noter que l’on utilise ici la fonction gettext ‘translate
‘ au lieu de __()
parce qu’une variable est traitée pour traduction.