Projet Niveau 1 — Thème enfant & portfolio structuré
⏱️ TL;DR — Premier contact avec le code de présentation. Vous créez un thème enfant d’un thème par blocs, vous surchargez un gabarit, vous réglez couleurs/typo via
theme.json, et vous montez un portfolio avec une page d’accueil en Query Loop. But : comprendre la hiérarchie de gabarits et où WordPress va chercher chaque template — sans encore écrire de PHP applicatif.
🎯 Niveau & objectifs
- Niveau : 1 (débutant). Prérequis : Niveau 0 terminé ; savoir éditer un fichier texte dans le dossier du thème.
- Durée indicative : 3–5 h.
- Vous allez pratiquer : thème enfant,
theme.json, gabarits FSE (templates/,parts/), motifs (patterns/), Query Loop, hiérarchie de gabarits.
📋 Cahier des charges
Contexte — Vous montez votre portfolio de développeur (il servira aussi à décrocher des missions, Partie 13). Vous voulez un rendu à vous, sans repartir de zéro : donc un thème enfant d’un thème par blocs solide.
Objectif — Un thème enfant fonctionnel qui personnalise un thème parent et fournit au moins un gabarit surchargé et un motif réutilisable.
Périmètre inclus
- Un thème enfant valide :
style.css(en-têteTemplate:) +theme.json+functions.phpminimal. - Un
theme.jsonqui définit une palette custom, une échelle typographique, et des réglages de mise en page (largeur de contenu). - Un gabarit surchargé : par ex.
templates/single.html(article) ouarchive.htmlpersonnalisé. - Une partie de gabarit (
parts/header.htmloufooter.html) à votre image. - Une page d’accueil listant les projets via un bloc Query Loop (CPT natif Article ou pages, au choix).
- Un motif (
patterns/) « carte de projet » réutilisable. - Le thème enfant activé, le parent restant intact.
Périmètre exclu — Pas de bloc custom en React (c’est le Niveau 3), pas de CPT custom (Niveau 2), pas de JavaScript applicatif. On reste thème + configuration.
Contraintes
- Thème parent = un thème par blocs (FSE) récent.
- Aucune modification du thème parent (tout dans l’enfant).
theme.jsonversion 3.
Livrables
- Le dossier du thème enfant (zippable).
- Une capture avant/après montrant l’effet du
theme.json.
✅ Critères de réussite
- Le thème enfant apparaît dans Apparence → Thèmes et s’active sans erreur.
- Changer une couleur dans
theme.jsonse répercute sur le site. - Le gabarit surchargé est bien celui qui s’affiche (vérifiable en le modifiant).
- Le Query Loop de la home affiche les bons éléments, paginés.
- Le motif « carte de projet » est insérable depuis l’inserter.
- Désactiver le thème enfant fait réapparaître le parent intact.
🗺️ Endroits à visiter
| Endroit | Où | Pourquoi y aller |
|---|---|---|
| Dossier du thème parent | wp-content/themes/<parent>/ | Lire theme.json, templates/, parts/ : la structure à imiter |
theme.json du parent | idem | Voir toutes les clés (settings, styles, customTemplates) |
| Éditeur de site → Styles | Apparence → Éditeur | L’UI qui écrit dans theme.json ; comparez UI ↔ fichier |
| Éditeur de site → Gabarits | Apparence → Éditeur | La liste des templates et leur hiérarchie |
| Hiérarchie de gabarits | schéma officiel | LA carte : quel fichier pour quelle page |
| Bloc Query Loop | dans l’éditeur | Le bloc qui remplace « The Loop » en no-code |
functions.php de l’enfant | votre thème | Le seul PHP ici : enqueue conditionnel éventuel |
💡 Pour un dev React —
theme.jsonest vos design tokens centralisés (couleurs, espacements, typo), et les gabarits FSE sont des layouts déclaratifs (comme deslayout.tsxpar route). La hiérarchie de gabarits est l’équivalent du routing par convention :single.html↔app/blog/[slug]/page.tsx. Le thème enfant, lui, c’est un override propre, pas un fork.
⚠️ Piège — Dans un thème par blocs, la surcharge ne passe pas par la copie de
functions.phpcomme dans les thèmes classiques : ce sont les fichiers HTML detemplates/etparts/de l’enfant qui prennent le dessus sur ceux du parent. Ne cherchez pas unheader.php: cherchezparts/header.html.
🚀 Étapes suggérées
- Créer le dossier enfant +
style.cssavec l’en-têteTemplate: <parent>. - Copier un
theme.jsonminimal, activer, vérifier. - Définir palette + typo dans
theme.json, observer l’effet. - Copier un gabarit du parent dans l’enfant, le modifier, confirmer qu’il s’affiche.
- Créer un motif
patterns/carte-projet.php. - Monter la home avec un Query Loop utilisant le motif.
- Tester activation/désactivation.
🎁 Bonus
- Ajoutez un gabarit personnalisé (
customTemplatesdanstheme.json) assignable à une page. - Créez une variation de style (
styles/dans le thème) : un thème « sombre » commutable. - Enqueue une petite feuille CSS conditionnelle via
functions.php.
🔗 Chapitres du cours liés
Projet suivant : Niveau 2 — Plugin « Bibliothèque » (CPT Livre).