Un bloc Titre de l’article, placé dans une Boucle de requête, doit afficher un titre différent selon l’article en cours de la boucle, sans qu’aucun réglage manuel n’ait été fait bloc par bloc. Ce genre de situation exige un canal de communication invisible entre un bloc parent et ses blocs enfants : c’est le contexte de bloc, un mécanisme qui transmet automatiquement une valeur (identifiant d’article, requête, niveau d’imbrication) à tous les descendants qui déclarent vouloir la recevoir.
Fonctionnement dans WordPress
Un bloc parent fournit une valeur de contexte via la clé providesContext de son block.json, en associant un nom de contexte (par exemple postType) à l’un de ses attributs. Un bloc enfant déclare, lui, dans usesContext, les noms de contexte qu’il souhaite recevoir, disponibles ensuite dans sa fonction edit via une prop dédiée, sans qu’aucun attribut explicite n’ait besoin d’être transmis manuellement à chaque insertion.
Exemple
// block.json du parent (Boucle de requête)
"providesContext": { "postType": "query/postType" }
// block.json de l'enfant (Titre de l'article)
"usesContext": [ "postType", "postId" ]
Bon à savoir
- Le contexte ne circule que du parent vers ses descendants, jamais dans l’autre sens ni entre blocs frères sans parent commun.
- Il ne remplace pas les attributs : il sert à transmettre une information partagée par la structure environnante, alors que l’attribut reste la donnée propre au bloc lui-même.
- Un bloc mal configuré qui déclare un
usesContextmais s’utilise hors de tout parent fournisseur reçoit simplement une valeur vide ou indéfinie, sans erreur explicite, ce qui peut compliquer le débogage.