Zum Inhalt

Entwicklungsumgebung

Die Umgebung

Entwickelt wird in einer lokalen WordPress-Installation mit DDEV. Das Projekt heißt twtheme-local und ist unter https://twtheme-local.ddev.site erreichbar.

Was Version
PHP 8.4
Webserver nginx mit FPM
Datenbank MariaDB 11.8

Der Mindeststand für das Theme selbst liegt niedriger — WordPress ab 6.7 und PHP ab 8.2. Entwickelt wird bewusst auf einer neueren Version, damit Kompatibilitätsprobleme früh auffallen.

Starten

cd /pfad/zu/twtheme-local
ddev start

Danach steht die Seite bereit, und WP-CLI ist innerhalb des Containers verfügbar:

ddev wp option get twtheme_modules --format=json
ddev wp theme list

Das Theme einrichten

cd wp-content/themes/twtheme
npm install
npm run build:all

Gebraucht werden Node und npm auf dem Host — der Build läuft außerhalb des Containers.

Zwei Themes, ein Projekt

Theme Rolle
twtheme der Parent, hier wird entwickelt
twtheme-demo ein minimales Child, das aktiviert wird

Aktiv ist immer das Child, nie der Parent. twtheme-demo ist gleichzeitig die Vorlage für echte Projekt-Childs: Dort ist jeder der vorgesehenen Erweiterungswege einmal ausgeschrieben — theme.json, Template-Overrides, Asset-Enqueue und Parent-Filter.

Siehe Child-Theme.

Beim Arbeiten

An Stylesheets:

npm run watch:css

An JavaScript:

npm run watch:js

Vor jedem Commit:

npm run check

Nach Umbauten, die Module berühren:

npm run check:wp

Der zweite Lauf startet eine WordPress-Instanz kalt und braucht daher eine laufende Umgebung. Siehe Qualität prüfen.

Den Release-Hook einhängen

npm run hooks:install

Danach packt nach jedem Commit ein Hintergrundlauf die Release-Pakete und hebt die Versionen an. Protokoll unter .git/twtheme-release.log.

Siehe Release-Pakete.

Änderungen erscheinen nicht

Nach einem Build im Browser noch die alte Fassung zu sehen, hat meist eine von drei Ursachen:

  1. Der Build ist nicht gelaufen — Datum der Datei in assets/ prüfen.
  2. Die Asset-Version ist nicht erhöht — in der Admin-Bar unter TWtheme → Update assets.
  3. Ein Caching-Plugin liegt dazwischen.

Für Übersetzungen

Gebraucht werden WP-CLI und msgfmt. WP-CLI liefert DDEV mit, msgfmt kommt aus den Gettext-Werkzeugen:

brew install gettext

Siehe Übersetzungen.

Nicht mit dem Paket installieren

Das Auslieferungspaket enthält kein source/, scripts/ und docs/. Eine Installation darüber würde diese Ordner entfernen.

Auf einer Entwicklungsumgebung wird deshalb nie das Paket installiert, sondern mit Git gearbeitet. Der TW Hub Agent erkennt ein Arbeitsverzeichnis an .git, node_modules, source oder scripts und verweigert die Installation.

Wo was liegt

Ordner Inhalt
templates/, parts/ Block-Templates und Parts
template-parts/ PHP-Bausteine
includes/theme-options/ die Module
includes/engine/ Feld-Engine
source/ SCSS- und JS-Quellen
assets/ gebaute Ergebnisse
scripts/ Build-, Prüf- und Release-Werkzeuge
docs/ Arbeitsdokumente zum Entwicklungsstand
languages/ Übersetzungen

Die Arbeitsdokumente im Theme

Unter docs/ im Theme-Repository liegen Dokumente, die zum Entwicklungsstand gehören und deshalb nicht in dieser Dokumentation stehen:

Datei Inhalt
A11Y-AUDIT-CHECKLIST.md Prüfliste Barrierefreiheit
BLOCK-REVIEW-MATRIX.md Stand der Blockprüfung
wp7-sass-deprecation-plan.md Umstellung veralteter Sass-Konstrukte
wp7-pagespeed-plan.md Vorhaben zur Ladezeit
wp7-megamenu-spec.md Spezifikation des Megamenüs

Die drei überführten Verträge — Child-Theme, Modul-Vertrag und CSS-Architektur — liegen dort nur noch als Verweis auf diese Dokumentation.

Weiter