Quiz 4 — Blocs React & headless
⏱️ TL;DR — 20 questions sur Gutenberg en React et WordPress headless avec Next.js (Parties 8–9). Réponds de tête, puis déplie.
1. Vrai ou faux : Gutenberg, c’est du React.
Réponse
Vrai. L’éditeur de blocs est une app React : chaque bloc est un composant avec des props (les réglages de l’inspecteur) et des enfants (InnerBlocks).
2. Quel est le rôle de block.json ?
Réponse
C’est le manifeste du bloc : nom, attributes, supports, scripts/styles, render (pour les dynamiques). L’équivalent d’un package.json de bloc.
3. edit vs save d’un bloc ?
Réponse
edit = le composant React affiché dans l’éditeur ; save = ce qui est sérialisé dans le contenu. Pour un bloc dynamique, save renvoie null.
4. Comment fait-on un bloc dynamique ?
Réponse
save renvoie null et le HTML est produit par un render_callback PHP (déclaré dans block.json) → la donnée reste fraîche côté serveur.
5. À quoi sert InspectorControls ?
Réponse
À afficher les réglages du bloc dans la sidebar (panneau de droite) : un portail React vers l’inspecteur, avec des PanelBody, SelectControl, etc.
6. À quoi sert useSelect de @wordpress/data ?
Réponse
À lire des données du store (ex. la liste des livres via le store core) dans l’éditeur, de façon réactive. Le hook de lecture du data layer de Gutenberg.
7. Que fait @wordpress/create-block ?
Réponse
Il scaffolde un bloc conforme (block.json, edit/save, build via @wordpress/scripts). Le point de départ officiel d’un bloc custom.
8. Pourquoi permission_callback est-il obligatoire sur une route REST ?
Réponse
Parce que l’API contourne l’UI : sans lui (ou avec __return_true par réflexe), c’est une faille. Même en lecture publique, on l’écrit explicitement.
9. Comment explore-t-on l’API REST de WordPress ?
Réponse
En ouvrant /wp-json/ (racine → namespaces) puis /wp-json/wp/v2/posts, /wp/v2/{cpt}, etc. C’est un contrat de données auto-décrit.
10. Où se trouve le nombre total de pages d’une réponse REST ?
Réponse
Dans les en-têtes X-WP-Total et X-WP-TotalPages (pas dans le corps JSON). Piège classique du front headless.
11. À quoi sert un Application Password ?
Réponse
À authentifier une machine (script, front Next.js) via l’API sans livrer le vrai mot de passe. Utilisé en Basic Auth, côté serveur uniquement.
12. En headless, quel est le rôle de chaque brique ?
Réponse
WordPress = back-office + source de données (REST/GraphQL) ; Next.js = front rapide qui la consomme (SSG/ISR) et se revalide. WordPress ne reçoit aucun trafic visiteur.
13. Que fait generateStaticParams (Next.js) ?
Réponse
Il pré-génère les routes au build (SSG) — ex. une page par livre — servies en statique, ultra-rapides.
14. Qu’est-ce que l’ISR (revalidate) ?
Réponse
La revalidation incrémentale : fetch(url, { next: { revalidate: 60 } }) régénère la page en arrière-plan au plus toutes les 60 s. Un contenu publié finit par apparaître, sans rebuild complet.
15. Comment prévisualise-t-on un brouillon en headless ?
Réponse
Via le Draft Mode de Next.js : une route signée bascule en rendu dynamique et fetch les brouillons (auth par Application Password). L’éditeur voit son brouillon sans publier.
16. Comment mettre à jour une page instantanément après publication ?
Réponse
Par revalidation à la demande : un webhook save_post → une route /api/revalidate (protégée par secret) → revalidatePath(). Plus frais que l’ISR temporel.
17. WPGraphQL vs REST : un avantage de chacun ?
Réponse
REST : natif, simple, cacheable par URL. WPGraphQL : une requête, champs précis, imbrication (moins d’aller-retours). GraphQL pour un front riche.
18. Quand CORS s’applique-t-il ?
Réponse
Si le front et WordPress sont sur des domaines différents et que le fetch est côté navigateur. En headless bien fait, on fetch côté serveur → pas de CORS.
19. Où doivent vivre les secrets (token, mot de passe d’application) ?
Réponse
En variables d’environnement, lues côté serveur uniquement (jamais dans le bundle client). Vérifiable dans l’onglet réseau.
20. À quoi sert register_rest_field ?
Réponse
À ajouter un champ calculé/formaté à la réponse REST d’un type (get_callback) — ex. exposer prix sur /wp/v2/wpr_book pour le front headless.
Quiz suivant : Quiz 5 — WooCommerce, expert & carrière.