# Doublon de balise title entre thème et plugin SEO : le diagnostic

> Deux balises title dans le code source d'un même site, un plugin SEO fraîchement installé et un thème classique ancien qui refuse de céder sa place. Symptôme, diagnostic, correctif.

- Auteur : Clément Hadrot
- Publié le : 2025-08-27
- Mis à jour le : 2025-08-27
- Catégorie : Thèmes
- URL : https://wpmoderne.dev.wordpress-developpement.fr/themes/doublon-balise-title-theme-plugin-seo/

## L’essentiel

- Le symptôme se voit dans le code source, rarement à l'écran
- Le thème génère souvent sa propre balise via wp_title
- Le bon endroit pour la générer, c'est le plugin, pas les deux

Un client nous a signalé un problème étrange remonté par son consultant SEO externe : l'outil d'audit technique de son site remontait systématiquement une erreur de « balise title dupliquée », alors qu'à l'écran, dans l'onglet du navigateur, tout semblait parfaitement normal. Ce type de symptôme, invisible à l'œil nu mais bien réel dans le code source, revient régulièrement sur des thèmes classiques anciens auxquels on ajoute un plugin SEO moderne.

Le diagnostic a confirmé le problème en quelques minutes une fois qu'on a su où regarder : deux balises `<title>` distinctes apparaissaient dans le `<head>` du document HTML généré.

## Symptôme : deux balises title dans le code source

Un affichage du code source de la page (raccourci habituel du navigateur, jamais visible dans les outils de développement seuls qui rendent le DOM déjà normalisé par le navigateur) révélait bien deux balises `<title>` consécutives : une générée par le plugin SEO installé récemment, une seconde héritée du thème classique, actif sur ce site depuis plusieurs années sans avoir jamais posé de problème visible auparavant.

Le navigateur ignore silencieusement la seconde balise title rencontrée et n'affiche que la première dans l'onglet, ce qui explique pourquoi le problème restait invisible à l'utilisateur final tout en étant bien réel pour les robots d'indexation, qui peuvent interpréter différemment la présence de balises dupliquées selon leur propre logique d'analyse.

## Diagnostic : remonter à la source de la génération

> L'essentiel à retenir : Le symptôme se voit dans le code source, rarement à l'écran ; Le thème génère souvent sa propre balise via wp_title ; Le bon endroit pour la générer, c'est le plugin, pas les deux

La cause se trouvait dans le fichier `header.php` du thème, qui contenait encore un appel explicite à la fonction dépréciée `wp_title()` à l'intérieur d'une balise `<title>` codée en dur, une pratique courante avant l'introduction de la gestion automatique du titre par le cœur de WordPress via le support de thème `title-tag` :

```
<!-- Dans header.php, ancien code trouve -->
<title><?php wp_title( '|', true, 'right' ); ?></title>
```

Le plugin SEO, de son côté, générait sa propre balise title de manière autonome via le hook `document_title_parts` ou directement en sortie du `<head>`, en toute logique puisqu'il ne pouvait pas deviner que le thème gérait déjà cette balise à sa façon, à l'ancienne.

## Vérifier si le support du thème est bien déclaré

La méthode moderne, recommandée depuis WordPress 4.1, consiste à déléguer entièrement la génération de la balise title au cœur via `add_theme_support( 'title-tag' )` dans `functions.php`, sans jamais coder la balise en dur dans `header.php`. Sur ce thème ancien, cette déclaration était absente, ce qui expliquait le recours à l'ancien appel direct à `wp_title()`.

- Vérifier la présence de `add_theme_support( 'title-tag' )` dans le `functions.php` du thème actif.
- Vérifier l'absence de toute balise `<title>` codée en dur dans `header.php`.
- Vérifier que le plugin SEO génère bien sa balise via les hooks natifs prévus à cet effet, sans conflit avec un ancien mécanisme du thème.

## Correctif appliqué

Le correctif a consisté à retirer la balise `<title>` codée en dur dans `header.php`, à ajouter `add_theme_support( 'title-tag' )` dans `functions.php`, et à laisser le plugin SEO reprendre l'entière responsabilité de la génération du contenu de cette balise, configuré selon les modèles de titre définis par le client dans ses réglages.

```
// Dans functions.php du thème
function theme_client_supports() {
    add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'theme_client_supports' );
```

## Prévention : un point de contrôle systématique

Nous avons ajouté ce contrôle à notre checklist standard d'installation d'un plugin SEO sur un thème classique préexistant : vérifier systématiquement, avant activation du plugin, la présence du support `title-tag` et l'absence de génération manuelle de la balise title dans les fichiers du thème. Ce contrôle prend moins de deux minutes et évite un diagnostic bien plus long une fois le problème remonté par un audit externe, souvent des semaines après l'installation initiale.

> Un problème invisible à l'écran n'est pas un problème inexistant. Le code source reste la seule vérité pour ce type de symptôme, jamais le rendu visuel dans le navigateur.

## En résumé

Une balise title dupliquée entre thème et plugin SEO est un symptôme classique de cohabitation mal préparée entre un thème classique ancien et un outil moderne. Le diagnostic passe systématiquement par l'examen du code source, la cause se trouve presque toujours dans une génération manuelle héritée côté thème, et le correctif consiste à confier cette responsabilité à un seul acteur : idéalement le plugin SEO, via le support natif `title-tag` du cœur de WordPress.
