La balise title dans WordPress 4.1 : comment la supporter dans vos thèmes ?

La version 4.1 de WordPress introduit une nouvelle gestion de la balise <title> reprise par Google dans ses résultats de recherche mais également par les navigateurs comme intitulé d’onglet ou de fenêtre. Cette balise est désormais gérée directement dans les fonctions du thème et ne devrait plus entrer en conflit avec les plugins de SEO.

Jusqu’à présent, les développeurs de thèmes inséraient la ligne suivante dans le fichier header.php :

 <title><?php wp_title(''); ?></title>

Ce code a toujours été considéré comme la norme absolue. Si un thème la présente d’une autre manière alors elle engendrera des conflits avec les plugins SEO qui devront forcer une réécriture des titres.

Avec la nouvelle façon de déclarer la balise <title>, vous indiquez à WordPress que votre thème n’interfèrera pas avec le système. Une avancée majeure attendue depuis des années pour ceux qui s’intéressent au sujet.

Pour la supporter dans votre thème, commencez par supprimer l’ancienne ligne comme indiquée plus haut dans header.php.

Ensuite, dans votre fichier de fonctions – functions.php par exemple, insérez la ligne suivante :

function wpc_theme_support() {
   add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'wpc_theme_support' );

Notez qu’il est fort probable que vous utilisiez déjà le hook after_setup_theme pour ajouter le support des éléments HTML5, le textdomain de langues, les miniatures, les menus ou encore les posts formats. Insérez donc cette ligne directement dans la fonction déjà créée si c’est le cas.

Si vous développez des thèmes devant offrir une rétrocompatibilité avec les versions inférieures à la 4.1 de WordPress, utilisez ces lignes en complément :

if ( ! function_exists( '_wp_render_title_tag' ) ) :
function theme_slug_render_title() {
    echo '<title>' . wp_title( '|', false, 'right' ) . "</title>\n";
}
add_action( 'wp_head', 'theme_slug_render_title' );
endif;

Cette nouvelle technique de gestion de la balise de titre est d’ores et déjà en place sur ce site !

14 commentaires

  1. david degliame

    Ha !
    Enfin, plus de prise de tête !
    C’était presque frustrant de devoir mettre les mains dans le cambouis quand on intervient dans un theme externe …
    je crois que je vais adopter ces fonction très rapidement !

    David.

    1. Aurélien Denis auteur de l’article

      En résumé, il faut utiliser les codes indiqués dans ton thème. Si tu ne développes pas tes thèmes, il y a fort à parier que le créateur de celui que tu utilises va mettre en place cela prochainement.

  2. cyrille

    Merci pour le partage de l’info. Par contre si je commente `wp_title( »);` dans /header.php et intègre le code dans /functions.php (en gardant `’dsframework_setup’`) le titre de l’article disparait simplement
    Sous WP-4.1.1, thème Touchfolio à jour, WordPress SEO activé pour les titres.

    1. Aurélien Denis auteur de l’article

      Chaque thème dispose de ses propres spécificités. Un thème bien codé doit respecter les règles officiellement décrites dans le codex. Si tel est le cas, le tutoriel fonctionne à la perfection.

  3. Pyraah

    Bonjour, petit souci avec le script : le titre de l’onglet est dupliqué (au lieu d’avoir « Mon site », j’ai « Mon siteMon site »).

    Une petite idée ?

Laisser un commentaire