Avant l’introduction de ce fichier, déclarer un bloc demandait de dupliquer les mêmes informations à deux endroits : une fois côté PHP pour l’enregistrement serveur, une fois côté JavaScript pour l’éditeur, avec le risque que les deux versions divergent. block.json règle ce problème en devenant la source unique de vérité : un seul fichier, lu aussi bien par register_block_type() en PHP que par les outils de compilation JavaScript, décrit tout ce qui définit le bloc.
Fonctionnement dans WordPress
Ce fichier déclare notamment name (au format espace-de-nom/nom-du-bloc), attributes, supports (les fonctionnalités activées comme les couleurs ou l’alignement), category, ainsi que les points d’entrée de scripts et styles (editorScript, style, viewScript, ou leur équivalent moderne en modules). Depuis WordPress 5.8, l’appel register_block_type( __DIR__ ) côté PHP suffit à lire automatiquement ce fichier, sans avoir à recopier ses informations dans un tableau PHP séparé.
Exemple
{
"apiVersion": 3,
"name": "mon-plugin/encart",
"title": "Encart",
"category": "widgets",
"attributes": { "texte": { "type": "string" } },
"editorScript": "file:./index.js"
}
Bon à savoir
- La propriété
apiVersiondétermine certains comportements du bloc dans l’éditeur (comme la gestion des styles imbriqués) ; la valeur 3 est la référence actuelle pour les nouveaux blocs. - Un outil comme
@wordpress/scriptspeut générer et compléter ce fichier automatiquement à partir d’un modèle de départ créé avec@wordpress/create-block. - Un bloc du répertoire officiel des extensions doit obligatoirement fournir un
block.jsonvalide pour être correctement indexé et affiché dans la bibliothèque de blocs.