Block Context
Définition : Block Context est le mécanisme par lequel un bloc parent fournit des valeurs à certains blocs descendants. Il évite de recopier des données de contexte dans chaque élément enfant.
Comprendre et utiliser
À quoi cela sert ?
Ce partage rend possibles des blocs réutilisables, par exemple un bloc Titre qui s’adapte à la publication représentée dans une liste de contenus.
Comment cela fonctionne ?
Le parent expose providesContext depuis ses attributs et l’enfant déclare usesContext pour recevoir les clés voulues. Ces valeurs sont accessibles dans edit ou le rendu PHP, pas dans save.
Dans quel contexte l’utiliser ?
Utile dans les compositions où plusieurs blocs enfants doivent connaître une même identité ou un même état éditorial dépendant du parent.
Cas concret : ATOOLPHA
Un bloc parent ATOOLPHA expose l’identifiant d’une ressource ; un bloc enfant affiche son étiquette à partir de ce contexte sans saisir deux fois l’identifiant.
Exemple de code commenté
Extrait documentaire : le contexte WordPress du plugin/éditeur et les dépendances décrites sont nécessaires ; ne pas coller dans le contenu d’une page.
{"providesContext":{"atoolpha/resourceId":"resourceId"},"attributes":{"resourceId":{"type":"number"}}}
Décryptage de l’exemple
La clé de contexte atoolpha/resourceId reçoit la valeur de l’attribut resourceId du parent. Un bloc enfant doit explicitement annoncer usesContext pour la consommer.
Résultat attendu
Les enfants compatibles peuvent accéder à l’identifiant transmis dans leur cycle d’édition ou de rendu ; aucune duplication d’attribut individuel n’est requise.
Atelier pratique de vérification
Créer un parent qui fournit une clé de contexte et un enfant qui la consomme. Vérifier la valeur reçue dans edit et dans un callback de rendu. Déplacer l’enfant sous un autre parent, puis observer le nouveau contexte. Tester aussi un enfant qui n’a pas déclaré usesContext.
Précautions et limites
Le contexte ne remplace pas le contrôle d’autorisation. Un identifiant de contenu transmis à un bloc ne doit pas donner accès automatiquement à des données privées.
Contrôle avant intégration dans un plugin
Documenter les noms des clés de contexte et les descendants autorisés. Tester le déplacement d’un enfant et les valeurs nulles, puis vérifier que le contexte n’est jamais utilisé seul comme preuve d’autorisation.
À ne pas confondre
Block Context transmet des valeurs dans la hiérarchie des blocs ; @wordpress/data représente un magasin d’état partagé entre composants de l’éditeur.
Diagnostic et dépannage avancés
Si un enfant ne reçoit aucune valeur, vérifier la déclaration usesContext, l’existence de l’attribut source sur le parent et leur relation réelle dans la hiérarchie.
Notions associées
- InnerBlocks
- @wordpress/data
- render_callback
