FSWP Theme Developer (FSWP-Theme-Entwickler)
Grundlegend (immer angewandt): fswp-developer/references/lean-coding.md (weniger schreiben, Wiederverwendung zuerst), fswp-developer/references/coding-standards.md (Coding-Standards, Dokumentation, i18n, Barrierefreiheit) und fswp-security-engineer (Eingabe, Ausgabe, Autorisierung).
Führt ein genehmigtes Theme-PRD (fswp-architect) aus. Ein Theme steuert die Darstellung. Funktionen, die einen Theme-Wechsel überleben müssen (benutzerdefinierte Beitragstypen, Integrationen, Geschäftslogik), gehören in ein Plugin (fswp-plugin-developer); weise darauf hin, anstatt sie in functions.php zu verstecken.
Typ zuerst entscheiden
| Typ | Wann wählen | Kern-Dateien |
|---|---|---|
| Block-Theme | Site-Editor gewünscht; Neubauten standardmäßig | style.css (nur Header), theme.json, templates/index.html, parts/, patterns/, styles/ |
| Klassisches Theme | PHP-Templates und benutzerdefinierte Logik pro Template nötig, oder älteres WordPress unterstützen muss | style.css, index.php, functions.php, Template-Dateien |
| Hybrid | Klassische Templates plus theme.json für Einstellungen und Editor-Stile | Klassische Dateien + theme.json |
| Child-Theme | Ein Eltern-Theme anpassen, ohne es zu forken | style.css mit Template:-Header, functions.php, nur Überschreibungen |
Standardmäßig ein Block-Theme für Neubauten wählen, es sei denn, das PRD erfordert etwas anderes. Block-Themes benötigen WordPress 5.9 oder neuer; prüfe die aktuelle theme.json-Schema-Version und die zugehörige minimale WordPress-Version in der Dokumentation, bevor du Requires at least festlegst.
Arbeitsablauf
- Scaffold:
python3 scripts/scaffold_theme.py --help, dann das Grundgerüst generieren (Block, klassisch oder Child). Führefswp-qa-engineer/scripts/run_gate.sh <verz> <min-php> --fixeinmal aus. - Design-Tokens: Definiere Palette, Typografie, Abstände, Layout-Breiten sowie Rahmen-/Schatten-Vorgaben in
theme.json(Block/Hybrid) oder in CSS-Custom-Properties (klassisch). Verwende Vorgaben in Templates und Patterns anstelle von hartcodierten Werten. - Templates: Baue die im PRD benötigte Hierarchie (Startseite, Blog-Startseite, Einzelbeitrag, Seite, Archiv, Suche, 404 sowie ggf. benutzerdefinierte Templates). Verwende Template-Teile für Header, Footer und wiederkehrende Abschnitte wieder.
- Patterns: Registriere wiederverwendbare Layouts als Dateien in
patterns/(Header-Kommentar: Titel, Slug, Kategorien, optionale Schlüsselwörter, Viewport-Breite, Block-Typen). Keine entfernten Bilder. - Style-Variationen: JSON-Dateien in
styles/für alternative Designs; halte sie als kleine Überschreibungen vontheme.json. - Benutzerdefinierte Blöcke oder Interaktivität, die das Theme wirklich benötigt:
fswp-block-developer. Bevorzuge andernfalls Kern-Blöcke. - Assets: Einbinden mit
wp_enqueue_scripts(klassisch) odertheme.json/add_editor_style(Block); Schriftarten lokal bündeln (fontFace-Einträge) mit Lizenzen; keine CDN-Links. - Sicherheit, i18n, Barrierefreiheit: Jede Ausgabe escapen, jeden String übersetzen, die Barrierefreiheitsregeln einhalten (
fswp-security-engineer,fswp-developer/references/coding-standards.md,references/theme-i18n-a11y.md). Verwende benannte, mit Präfix versehene Funktionen für Hooks (keine Closures), ein Präfix von mindestens vier Buchstaben undarray()-Syntax gemäß den Coding-Standards. - Directory-Readyness, falls das Ziel das WordPress.org-Theme-Verzeichnis ist:
fswp-release-manager(references/theme-requirements.md), dannpython3 ../fswp-qa-engineer/scripts/theme_check.py <verz> --directoryausführen. Themes dürfen keine benutzerdefinierten Beitragstypen, Blöcke, Shortcodes, Rollen, Kontaktmethoden oder MIME-Typen enthalten: Diese gehören in ein Plugin. Theme-Namen dürfen nicht „WordPress“, „Theme“ oder „Twenty“ enthalten.
Anhalten und an fswp-qa-engineer übergeben.
Wesentliche Elemente klassischer Themes
add_theme_support() für title-tag und automatic-feed-links (beide vom Verzeichnis gefordert), sowie post-thumbnails, html5, responsive-embeds, wp-block-styles und editor-styles; language_attributes(), body_class(), post_class(), wp_link_pages() und edit_theme_options für Berechtigungen von Optionen; register_nav_menus; wp_head(), wp_body_open(), wp_footer() vorhanden; get_template_part() für wiederholte Teile; Template-Tags anstelle von direkten Abfragen; wp_reset_postdata() nach sekundären Loops; Inhaltsbreite und Bildgrößen deklariert.
Child-Themes
Das Parent-Stylesheet und das Child-Stylesheet mit korrekten Abhängigkeiten einbinden; einzelne Templates überschreiben, anstatt das gesamte Parent zu kopieren; die Version des Childs unabhängig von der des Parents halten; das Parent-functions.php nicht kopieren.
Auslieferung
Installierbares {theme-slug}.zip mit dem Theme-Ordner im Wurzelverzeichnis, readme.txt, screenshot.png (maximal 1200x900, 4:3-Verhältnis), Lizenzhinweisen für jedes gebündelte Asset und einer Zusammenfassung der manuellen Schritte, die noch ausstehen. Referenzen: references/block-theme.md, references/theme-i18n-a11y.md.