FSWP Theme Developer
Fondamental (toujours appliqué) : fswp-developer/references/lean-coding.md (écrire moins, réutiliser d'abord), fswp-developer/references/coding-standards.md (normes de codage, documentation, i18n, accessibilité), et fswp-security-engineer (entrée, sortie, autorisation).
Exécute un PRD de thème approuvé (fswp-architect). Un thème contrôle la présentation. Les fonctionnalités qui doivent survivre à un changement de thème (types de publication, intégrations, logique métier) appartiennent à une extension (fswp-plugin-developer) ; dites-le plutôt que de les cacher dans functions.php.
Déterminer le type d'abord
| Type | Quand choisir | Fichiers principaux |
|---|---|---|
| Thème bloc | Édition avec l'éditeur de site souhaitée ; nouvelles constructions par défaut | style.css (en-tête uniquement), theme.json, templates/index.html, parts/, patterns/, styles/ |
| Thème classique | Nécessite des templates PHP et une logique personnalisée par template, ou doit supporter d'anciennes versions de WordPress | style.css, index.php, functions.php, fichiers de templates |
| Thème hybride | Templates classiques plus theme.json pour les paramètres et les styles de l'éditeur | Fichiers classiques + theme.json |
| Thème enfant | Adapter un thème parent sans le dupliquer | style.css avec l'en-tête Template:, functions.php, uniquement les surcharges |
Par défaut, choisir un thème bloc pour les nouvelles constructions sauf si le PRD indique le contraire. Les thèmes blocs nécessitent WordPress 5.9 ou une version ultérieure ; vérifiez la version actuelle du schéma theme.json et sa version minimale de WordPress dans la documentation avant de définir Requires at least.
Workflow
- Échafaudage :
python3 scripts/scaffold_theme.py --help, puis générez le squelette (bloc, classique ou enfant). Exécutezfswp-qa-engineer/scripts/run_gate.sh <dir> <min-php> --fixune fois. - Design tokens : définissez la palette, la typographie, l'espacement, les largeurs de mise en page et les préréglages de bordure/ombre dans
theme.json(bloc/hybride) ou dans les propriétés personnalisées CSS (classique). Utilisez des préréglages dans les templates et les patterns au lieu de valeurs en dur. - Templates : construisez la hiérarchie dont le PRD a besoin (page d'accueil, page d'accueil du blog, article, page, archive, recherche, 404, plus les templates personnalisés). Réutilisez les parties de template pour l'en-tête, le pied de page et les sections répétées.
- Patterns : enregistrez les mises en page réutilisables sous forme de fichiers dans
patterns/(commentaire d'en-tête : Title, Slug, Categories, Keywords optionnels, Viewport Width, Block Types). Pas d'images distantes. - Variations de style : fichiers JSON dans
styles/pour des apparences alternatives ; gardez-les comme des surcharges légères detheme.json. - Blocs personnalisés ou interactivité dont le thème a vraiment besoin :
fswp-block-developer. Sinon, privilégiez les blocs de base. - Assets : ajoutez-les avec
wp_enqueue_scripts(classique) outheme.json/add_editor_style(bloc) ; regroupez les polices localement (entréesfontFace) avec leurs licences ; pas de liens CDN. - Sécurité, i18n, accessibilité : échappez chaque sortie, traduisez chaque chaîne, respectez les règles d'accessibilité (
fswp-security-engineer,fswp-developer/references/coding-standards.md,references/theme-i18n-a11y.md). Utilisez des fonctions nommées et préfixées pour les hooks (jamais de fermetures), un préfixe d'au moins quatre lettres, et la syntaxearray()conformément aux normes de codage. - Préparation pour l'annuaire si la cible est l'annuaire des thèmes WordPress.org :
fswp-release-manager(references/theme-requirements.md), puis exécutezpython3 ../fswp-qa-engineer/scripts/theme_check.py <dir> --directory. Les thèmes ne peuvent pas contenir de types de publication personnalisés, de blocs, de codes courts, de rôles, de méthodes de contact ou de types MIME : ceux-ci appartiennent à une extension. Les noms de thèmes ne peuvent pas contenir "WordPress", "Theme" ou "Twenty".
Arrêtez et transmettez à fswp-qa-engineer.
Essentiels du thème classique
add_theme_support() pour title-tag et automatic-feed-links (tous deux requis par l'annuaire), plus post-thumbnails, html5, responsive-embeds, wp-block-styles, et editor-styles ; language_attributes(), body_class(), post_class(), wp_link_pages(), et edit_theme_options pour les permissions d'options ; register_nav_menus ; présence de wp_head(), wp_body_open(), wp_footer() ; get_template_part() pour les parties répétées ; utilisez les balises de template plutôt que des requêtes directes ; wp_reset_postdata() après les boucles secondaires ; déclarez la largeur du contenu et les dimensions des images.
Thèmes enfants
Ajoutez la feuille de style parente et la feuille de style enfant avec les dépendances correctes ; surchargez les templates individuels plutôt que de copier le parent ; gardez la version de l'enfant indépendante de celle du parent ; ne copiez pas le functions.php du parent.
Livraison
{theme-slug}.zip installable avec le dossier du thème à la racine, readme.txt, screenshot.png (au maximum 1200x900, ratio 4:3), les mentions de licence pour chaque asset regroupé, et un résumé des étapes manuelles à effectuer. Références : references/block-theme.md, references/theme-i18n-a11y.md.