Le WordPress d'aujourd'hui, décodé pour les développeurs

SEO & GEO

Centraliser dans un seul filtre les balises meta éparpillées dans un thème

Titre et description générés à trois endroits différents d'un thème finissent par se contredire. Recette pour tout regrouper dans un point unique, sans extension SEO.

Par WordPress Développement • 15 février 2022 • 4 min de lecture • Aucun commentaire
Centraliser dans un seul filtre les balises meta éparpillées dans un thème

Un thème vieillissant accumule souvent trois façons différentes de générer le même titre de page : une fonction dans header.php, un filtre ajouté plus tard dans functions.php, et un correctif ponctuel greffé pour un cas particulier. Résultat : le titre change de comportement selon le type de page consultée, sans logique cohérente d’ensemble, et personne ne sait plus quel bout de code prend réellement le dessus.

Cette recette propose de regrouper cette logique dans un point d’entrée unique, en s’appuyant sur les filtres natifs de WordPress plutôt que sur une extension SEO complète, pour un site qui n’a besoin que de ce contrôle précis.

Le problème observé

Sur le thème audité, trois bouts de code coexistaient : un echo direct du titre dans header.php, un filtre wp_title hérité d’une ancienne version de WordPress, et une fonction ajoutée plus récemment sur document_title_parts. Ces trois mécanismes ne s’appliquaient pas aux mêmes types de page, créant des incohérences : les pages d’archive affichaient un titre correct, mais les pages de résultats de recherche affichaient encore l’ancien format hérité du filtre wp_title, obsolète depuis WordPress 4.4.

La centralisation dans un seul filtre

L'essentiel à retenir : document_title_parts centralise le calcul du titre affiché ; Une seule fonction accrochée à wp_head gère la meta description ; Regrouper évite les incohérences entre plusieurs bouts de code épars

Le filtre document_title_parts, seul mécanisme moderne à conserver, reçoit un tableau associatif avec les clés title, page, tagline et site. En s’appuyant uniquement sur ce filtre, toute la logique se retrouve à un seul endroit :

add_filter( 'document_title_parts', function( $parties ) {
    if ( is_singular( 'produit' ) ) {
        $parties['title'] = get_the_title() . ' — Prix et disponibilité';
    } elseif ( is_search() ) {
        $parties['title'] = 'Résultats pour « ' . get_search_query() . ' »';
    }
    return $parties;
} );

Les deux autres mécanismes hérités — l’echo direct et le filtre wp_title — ont été supprimés du thème, laissant WordPress gérer seul l’affichage final du titre à partir de ce filtre unique.

Faire de même pour la meta description

La meta description suit le même principe de centralisation, via une seule fonction accrochée à wp_head :

add_action( 'wp_head', function() {
    $description = '';
    if ( is_singular() ) {
        $description = has_excerpt() ? get_the_excerpt() : wp_trim_words( get_the_content(), 25 );
    } elseif ( is_category() || is_tax() ) {
        $description = term_description();
    }
    if ( $description ) {
        printf( '<meta name="description" content="%s">' . "\n", esc_attr( wp_strip_all_tags( $description ) ) );
    }
}, 1 );

Ce que cette centralisation a changé en pratique

Après ce nettoyage, une modification du format de titre pour les pages produit — l’ajout du suffixe « — Prix et disponibilité » — ne demandait plus qu’une seule modification, dans une seule fonction. Auparavant, ce genre de changement obligeait à vérifier les trois mécanismes en parallèle, avec le risque d’en oublier un et de se retrouver avec un format incohérent selon le type de page consultée.

Variantes selon le type de site

  • Ajouter une clause dédiée pour les pages de pagination, souvent oubliées dans ce type de logique
  • Prévoir une valeur de repli générique quand aucune description spécifique n’est disponible
  • Extraire cette logique dans une classe dédiée si le nombre de conditions dépasse une dizaine de cas

Un principe simple appliqué depuis ce chantier : une seule fonction par métadonnée, jamais deux mécanismes concurrents qui risquent de se marcher dessus.

Documenter le point d’entrée pour l’équipe

Une fois la centralisation effectuée, il reste utile d’ajouter un commentaire clair au-dessus de chaque fonction, précisant qu’il s’agit du seul point autorisé à modifier le titre ou la description du site. Cette précaution simple évite qu’un développeur pressé, quelques mois plus tard, n’ajoute un quatrième mécanisme concurrent par méconnaissance de l’existant, recréant exactement le problème que cette recette cherchait à éliminer.

En résumé

Un thème qui accumule plusieurs générations de code pour la même métadonnée finit toujours par produire des incohérences difficiles à diagnostiquer. Regrouper le titre et la meta description dans un point d’entrée unique par métadonnée, en s’appuyant sur les filtres natifs document_title_parts et wp_head, règle ce problème sans nécessiter l’installation d’une extension SEO complète.

Laisser un commentaire

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

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi