Avril 2024 : WordPress 6.5 ajoute la Font Library, un registre central de polices consultable et installable directement depuis l’éditeur de site, sans quitter l’interface d’administration. Pour un auteur d’extension qui fournissait jusque-là ses propres polices via un enregistrement manuel de fichiers .woff2 et un appel à wp_enqueue_style(), cette nouveauté change la façon de distribuer ces ressources : plutôt que d’imposer un chargement systématique, l’extension propose désormais une collection que l’utilisateur choisit d’installer ou non.
Étape 1 : comprendre ce que gère la Font Library
La Font Library stocke les polices installées sous forme de deux types de contenu internes, wp_font_family et wp_font_face, gérés automatiquement par le cœur de WordPress. Une fois une police installée depuis l’interface, elle devient disponible dans les réglages de style de l’éditeur de site, au même titre que les polices fournies par le thème actif, sans distinction visible pour l’utilisateur final.
Étape 2 : déclarer une collection de polices

Le point d’entrée pour une extension est la fonction wp_register_font_collection(), appelée sur le hook init, qui reçoit un identifiant de collection et un tableau de configuration :
add_action( 'init', function() {
wp_register_font_collection(
'mon-extension-polices',
array(
'name' => 'Polices maison',
'description' => 'Polices fournies par Mon Extension pour une lecture confortable.',
'font_families' => MON_EXTENSION_PATH . 'polices/collection.json',
)
);
} );
Le paramètre font_families peut pointer soit vers un tableau PHP directement, soit vers le chemin d’un fichier JSON, ce qui garde la définition des polices séparée du code d’enregistrement lui-même.
Étape 3 : décrire chaque famille dans le fichier JSON
Le fichier de collection suit un format structuré, avec une entrée par famille de polices et, pour chacune, la liste de ses graisses et styles disponibles :
[
{
"font_family_settings": {
"name": "Lecture Confort",
"slug": "lecture-confort",
"fontFace": [
{
"fontFamily": "Lecture Confort",
"fontWeight": "400",
"fontStyle": "normal",
"src": [ "file:./lecture-confort-regular.woff2" ]
},
{
"fontFamily": "Lecture Confort",
"fontWeight": "700",
"fontStyle": "normal",
"src": [ "file:./lecture-confort-bold.woff2" ]
}
]
},
"categories": [ "sans-serif" ]
}
]
Le préfixe file: dans le champ src indique à WordPress que le fichier de police est fourni localement par l’extension, et non hébergé sur un service externe : WordPress copie alors le fichier dans la médiathèque au moment de l’installation choisie par l’utilisateur.
Étape 4 : laisser l’utilisateur décider de l’installation
Contrairement à un chargement systématique via wp_enqueue_style() à l’activation de l’extension, la collection déclarée n’installe rien automatiquement : elle apparaît simplement dans l’onglet « Gérer les polices » de l’éditeur de style, où l’utilisateur choisit lui-même les familles à installer. Ce changement de posture évite qu’une extension n’alourdisse le chargement de chaque page avec des polices que le thème actif n’utilise pas nécessairement.
Étape 5 : vérifier la compatibilité du thème actif
La Font Library ne fonctionne pleinement qu’avec un thème compatible avec l’éditeur de site et disposant d’un fichier theme.json. Sur un thème classique sans support de l’éditeur de site, la fonction wp_register_font_collection() reste sans effet visible : il est donc utile de vérifier la présence de ce support avant de proposer la collection, via wp_theme_has_theme_json(), pour éviter de documenter une fonctionnalité invisible pour une partie des utilisateurs.
Ce que la Font Library ne remplace pas totalement
Pour une police strictement nécessaire au fonctionnement visuel d’un composant fourni par l’extension, indépendamment du thème choisi par l’utilisateur, un enregistrement classique via wp_enqueue_style() reste justifié : la Font Library répond à un besoin éditorial de personnalisation, pas à une dépendance technique stricte d’un composant d’interface.
En résumé
S’intégrer à la Font Library de WordPress 6.5 demande peu de code, un fichier JSON de description et un appel à wp_register_font_collection(), mais implique un changement de posture : l’extension propose une ressource optionnelle plutôt que d’imposer un chargement systématique, ce qui correspond mieux à l’esprit de personnalisation porté par l’éditeur de site.