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

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-embedsajoute 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-wideautorise, 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.