# add_theme_support expliqué : ce qu’un thème classique doit déclarer

> Glossaire raisonné de title-tag, post-thumbnails, html5, custom-logo, responsive-embeds et align-wide, avec l'effet réel de chacun sur le site.

- Auteur : Clément Hadrot
- Publié le : 2020-09-11
- Mis à jour le : 2020-09-11
- Catégorie : Thèmes
- URL : https://wpmoderne.dev.wordpress-developpement.fr/themes/add-theme-support-explique-glossaire/

## L’essentiel

- title-tag laisse WordPress gérer la balise title
- html5 modernise le balisage des formulaires et commentaires
- align-wide prépare le thème à l'éditeur de blocs

Un développeur qui reprend un thème existant tombe presque toujours, en haut de `functions.php`, sur une série d'appels à `add_theme_support()`. Certains sont indispensables, d'autres redondants avec des réglages déjà actifs par défaut, et quelques-uns produisent un effet totalement différent de ce que leur nom laisse penser. Ce glossaire reprend les déclarations les plus courantes d'un thème classique et explique, pour chacune, ce qu'elle change réellement une fois activée.

L'objectif n'est pas de lister exhaustivement toutes les fonctionnalités disponibles, mais de clarifier celles qu'on retrouve dans presque tous les thèmes et sur lesquelles les confusions sont fréquentes.

## title-tag : laisser WordPress gérer la balise title

Avant cette fonctionnalité, chaque thème devait écrire sa propre balise `<title>` dans `header.php`, généralement avec `wp_title()` et une logique conditionnelle pour gérer la page d'accueil, les archives et les articles. Depuis que `add_theme_support( 'title-tag' )` existe, WordPress génère et insère lui-même cette balise via `wp_head`, avec un format cohérent partout sur le site :

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

Conséquence pratique : la balise `<title>` ne doit plus jamais être écrite à la main dans `header.php`. Sa présence à cet endroit, en plus de cette déclaration, provoque un doublon visible dans le code source de la page.

## post-thumbnails : activer les images à la une, pas les afficher

> L'essentiel à retenir : title-tag laisse WordPress gérer la balise title ; html5 modernise le balisage des formulaires et commentaires ; align-wide prépare le thème à l'éditeur de blocs

Erreur fréquente chez les débutants : croire que `add_theme_support( 'post-thumbnails' )` suffit à faire apparaître une image à la une sur le site. En réalité, cette déclaration ne fait qu'autoriser l'interface d'administration à proposer le champ « Image mise en avant » et active la fonction `the_post_thumbnail()` pour qu'elle fonctionne. Sans un appel explicite à cette fonction dans le gabarit concerné, aucune image ne s'affiche jamais.

```
add_theme_support( 'post-thumbnails' );
add_theme_support( 'post-thumbnails', array( 'post', 'agence_projet' ) );
```

Le second exemple restreint la fonctionnalité à certains types de contenu seulement — utile quand un type personnalisé comme une taxonomie de témoignages n'a aucun besoin d'image à la une.

## html5 : moderniser le balisage généré par le cœur

Cette déclaration indique à WordPress de générer certains éléments (formulaire de recherche, formulaire de commentaire, galeries, légendes, listes de mise à jour de widgets) en HTML5 plutôt qu'en XHTML transitionnel hérité des débuts du CMS :

```
add_theme_support( 'html5', array(
	'search-form',
	'comment-form',
	'comment-list',
	'gallery',
	'caption',
	'script',
	'style',
) );
```

Sans cette déclaration, le formulaire de recherche généré par `get_search_form()` reste enveloppé dans une structure plus ancienne, avec des attributs superflus. Tous les thèmes créés à partir de 2015 environ l'activent par défaut ; son absence dans un thème récent est presque toujours un oubli.

## custom-logo : un emplacement de logo géré par le Customizer

Cette fonctionnalité ajoute un contrôle dédié dans le Customizer pour téléverser un logo, récupéré ensuite dans le thème via `the_custom_logo()`. Les dimensions déclarées influencent uniquement la taille d'affichage recommandée, pas un recadrage forcé :

```
add_theme_support( 'custom-logo', array(
	'height'      => 80,
	'width'       => 240,
	'flex-height' => true,
	'flex-width'  => true,
) );
```

### responsive-embeds et align-wide : deux déclarations plus discrètes

- `responsive-embeds` ajoute automatiquement un conteneur CSS autour des contenus intégrés (vidéo YouTube, tweet) pour qu'ils conservent leur ratio d'aspect au redimensionnement, sans code JavaScript supplémentaire à écrire.
- `align-wide` autorise, dans l'éditeur de blocs, les options d'alignement « large » et « pleine largeur » sur les blocs qui les supportent (image, colonnes, groupe). Sans cette déclaration, ces options n'apparaissent tout simplement pas dans la barre d'outils du bloc.

> Chaque add_theme_support est un contrat passé avec le cœur de WordPress : on annonce ce que le thème sait gérer, et le cœur adapte son comportement en conséquence. Le déclarer sans l'implémenter derrière ne sert jamais à rien.

## Ce qu'il faut retenir

La plupart des thèmes classiques gagnent à déclarer explicitement `title-tag`, `post-thumbnails`, `html5`, `custom-logo`, `responsive-embeds` et `align-wide` dès leur mise en place, plutôt que de les ajouter au fil des besoins constatés en production. Ces réglages restent propres aux thèmes classiques : leurs équivalents dans un futur thème à blocs, un concept encore expérimental porté par le plugin Gutenberg, suivront une logique différente qui n'est pas traitée ici.
