- Statut
- Ouvert
Aperçu de l’anomalie
La fonction native de WordPress has_category ne fonctionne pas pour les articles traduits.
En voici un exemple :
- Nous avons une catégorie avec le slug anglais « test » et sa traduction française « test-fr ».
- Cette catégorie est attribuée à des articles.
- Lorsque vous appelez has_category(”test”) dans une boucle du fichier single.php de votre thème, elle renvoie true pour la langue par défaut, mais false pour la traduction.
Solution de contournement
Définissez un nouveau filtre dans le fichier functions.php de votre thème :
function wp_has_category ($category) {
$category = get_term_by('name', $category, 'category');
return has_category($category);
}
add_filter('wp_has_category', 'wp_has_category', 10, 1);Remplacez la fonction has_category par ce nouveau filtre :
apply_filters( 'wp_has_category', 'test' )
Ce filtre prend la catégorie traduite en fonction du nom de la catégorie d’origine et vérifie si la catégorie traduite est attribuée à un article.