Child-Themes – Vererbung von Themes in WordPress

Ein Riesenproblem bei Änderungen in WordPress-Themes ist der Verlust der Update-Fähigkeit. Die eigenen Änderungen gehen in aller Regel verloren, wenn eine neue Version eines Themes installiert. Woher sollte der Theme-Entwickler auch von unserer Anpassung wissen (zumindest solange wir nicht mit ihm in Kontakt getreten sind)?

Hier sind Child-Themes seit WordPress 3 ein Ausweg: Man kann seither durch Anlegen eines Ordners und Setzen einiger Verweise in einer Datei WordPress dazu veranlassen, zur Darstellung zuerst in jenem Child-Ordner nach Template-Dateien nachzusehen und nur die Dateien aus dem Ursprungs-Ordner einzulesen, die nicht im Child-Ordner liegen. Bei Updates wird nur der Parent-Ordner aktualisiert. Eine recht einfache aber effiziente Form des Prinzips der Vererbung. Das verhindert zwar nicht jegliche Konflikte aber recht viele.

Das Wichtigste

  • Ordner für ein Child-Theme: Im Theme-Ordner muss neuer Ordner für ein Child-Theme angelegt werden. Strukturell ist eine Child-Theme erst einmal nichts anderes als ein neues/weiteres Theme. Es ist meist hilfreich, wenn der Ordner von der Bezeichnung her einen Bezug zum Parent-Ordner hat (also eine Child-Theme von twentytwelve z.B. in einem Ordner namens twentytwelve-child liegt) – technisch notwendig ist es aber nicht.
  • style.css: Der Ordner muss eine Datei namens style.css enthalten. Diese Datei muss in einem Header die Tags Theme Name und Template enthalten:
/**
* Theme Name: twentytwelve-child
* Template:   twentytwelve
*/

Achtung: Es handelt sich um einen Verweis auf einen Ordnernamen – nicht um einen Theme-Namen. Das im Beispiel gezeigte Theme heißt eigentlich Twenty Twelve, der Ordner in dem es liegt twentytwelve. Das Tag Theme Name bezieht sich auf Letzteres (den Ordner) – nicht auf den wirklichen Namen des Themes.

  • (Template-)Dateien: Die Daateien, die angepasst werden sollen (und nur die!) kopiert man sich in den Child-Ordner und ändert darin, was man gerne anders hätte. WordPress zieht bei der Ausführung die Child-Dateien vor.
  • Functions.php: Ausnahme beim Vererbungsverhalten – die Template-Datei functions.php! Hier wird immer die Child-Variante zusätzlich zur Ursprungsvariante ausgeführt. Das heißt: diese Datei kopiert man nicht in den Child-Ordner sondern man schreibt komplett neu, was an Funktionen hinzukommen soll. Bei Änderungen von Funktionen muss man via Hook die Ursprungsfunktion deaktivieren.
  • Ordner/Hierarchie: Die Position von geänderten Dateien im Child-Theme muss identisch mit der des Ursprungsthemes sein. Wenn also weitere Unterordner etc. in einem Theme vorliegen und eine weiter unten abgelegte Datei geändert werden soll, muss man auch die Ordnerstruktur nachbilden.
  • Preview: Das Preview-Bild, dass man im Admin-Bereich unter Design > Themes angezeigt bekommt, muss eine PNG-Datei mit den 300 x 225 Pixel Größe sein und den Namen „screenshot.png“ haben.

Natürlich gibt es bei den Machern von WordPress die offizielle Dokumentation zu Child-Themes.