Wolltest Du schon immer ein paar individuelle Design-Anpassungen in Deinem WordPress-Theme machen, aber die Original-Dateien nicht verändern? Mit dem mächtigen WordPress-Feature „Child Themes“ und Grundkenntnissen in HTML und CSS ist das nicht schwierig.
Fertige Website-Vorlagen – so genannte Themes – gibt es massenhaft. Doch selten findet sich eines, das exakt passt. Kleine Anpassungen sind fast immer nötig, und sei es nur die Schriftart, ein paar Farben oder eine zu dick geratene Linie. Schon mit HTML- und CSS-Grundkenntnissen kannst Du WordPress-Themes ganz einfach verändern und anpassen, Basis-Wissen in PHP ist für größere Änderungen hilfreich.
Mit so genannten „Child Themes“ bietet WordPress ein mächtiges Feature. Sie setzen auf ein vorhandenes Theme mit dessen Formatierungen und Funktionen auf und ergänzen oder modifizieren es mit eigenen Elementen und Designs. Der große Vorteil: Das Original-Theme bleibt dabei unangetastet, Updates des Originals beeinträchtigen die Anpassungen im Child-Theme nicht.
Schritt für Schritt: Erstelle Dein eigenes Child-Theme
Ein wenig Aufwand bringt nur das erstmalige Anlegen des Child Themes mit sich, danach sind die Anpassungen genau so unkompliziert als würdest Du direkt im Original-Theme arbeiten. Zunächst suchst Du Dir ein Theme aus, das Deinen Vorstellungen so nahe wie möglich kommt, und installierst es. Achte darauf, dass es als geeignet für Child Themes beschrieben wird. Die meisten Themes sind das, aber es gibt Ausnahmen.
![Für Bequeme: Das Plugin „One Click Child Theme“ erledigt die ersten Schritte automatisch.]()
Für Bequeme: Das Plugin „One Click Child Theme“ erledigt die ersten Schritte automatisch.
Im Folgenden beschreiben wir, wie Du ein Child-Theme manuell anlegst. Willst Du Dir diese ersten Schritte sparen, erledigt das in den meisten Fällen auch das Plugin „One Click Child Theme“ automatisch. Die Design-Anpassungen des Child-Themes musst Du anschließend aber natürlich dennoch von Hand erledigen.
1) Ordner fürs Child Theme anlegen
Themes liegen in Deinem Webspace im Verzeichnis wp-content/themes. Wir verwenden für unser Beispiel hier ein Eltern-Theme, das im Verzeichnis wp-content/themes/elterntheme liegt. Entsprechend muss Du bei den folgenden Beschreibungen elterntheme jeweils gegen den Verzeichnisnamen Deines tatsächlichen Eltern-Themes austauschen.
![Der Child-Theme-Ordner liegt auf derselben Verzeichnis-Ebene wie das Eltern-Theme]()
Der Child-Theme-Ordner liegt auf derselben Verzeichnis-Ebene wie das Eltern-Theme
Unter wp-content/themes legst Du nun also auf der gleichen Ebene wie das ausgewählte Eltern-Theme ein neues Verzeichnis an. Wie Du das Verzeichnis benennst, ist egal. Es bietet sich aber zum späteren Verständnis beipielsweise elterntheme-child als Name an.
2) Child Theme definieren
In diesem neuen Verzeichnis – im Beispiel wp-content/themes/elterntheme-child – legst Du eine neue Datei namens style.css an. Sie muss die folgenden Code-Zeilen beinhalten, damit WordPress erkennt, dass es sich hier um ein Child Theme zum Theme im Verzeichnis wp-content/themes/elterntheme handelt:
/*
Theme Name: Dein Child Theme
Description: optionale Beschreibung Deines Child Themes
Author: Dein Name
Author URI: http://www.deinewebsite.tld
Template: elterntheme
Version: 1.0
Tags: elterntheme
Text Domain: elterntheme-child
*/
![Das Child-Theme funktioniert nur, wenn das Eltern-Template korrekt benannt ist.]()
Das Child-Theme funktioniert nur, wenn das Eltern-Template korrekt benannt ist.
Entscheidend ist die Zeile Template, denn dort muss der exakte Name des Verzeichnisses eingetragen sein, in dem das ausgewählte Eltern-Theme liegt. In unserem Beispiel also elterntheme.
3) CSS-Formatierungen aus dem Eltern-Theme verknüpfen
Der einzige etwas anspruchsvollere Schritt bei der Erstellung eines Child Themes kommt jetzt: Wir müssen die CSS-Definitionen aus dem Eltern-Theme mit dem Child-Theme korrekt verknüpfen.
Hierfür legst Du im Child-Theme-Verzeichnis eine neue Datei namens functions.php an. Diese Datei brauchst Du später gegebenenfalls auch für Anpassungen der Funktionalität des Themes, also für Erweiterungs-Code in PHP.
Im Moment benötigst Du die Datei aber für die Einbindung der CSS-Definitionen des Eltern-Themes und das Zusammenführen mit dem CSS des Child-Themes in der richtigen Reihenfolge. Wichtig ist dabei, dass zuerst die CSS-Definitionen des Eltern-Themes und dann erst die des Child-Themes geladen werden, damit das Child-Theme wirken kann.
Die functions.php beginnt mit <?php und endet mit ?>. Alle weiteren Anweisungen stehen zwischen diesen öffnenden und schließenden PHP-Tags.
Im folgenden Code musst Du lediglich elterntheme gegen den so genannten „handle“ Deines Eltern-Themes austauschen. Das „handle“ ist nichts anderes als der Name im PHP-Code, den das Eltern-Theme seinen CS-Styles zugewiesen hat.
Oft entspricht der „handle“ dem Verzeichnis-Namen des Eltern-Themes. Falls nicht, suchst Du in der function.php des Eltern-Themes nach „ wp_enqueue_style“. Dort steht dann zum Beispiel:
wp_enqueue_style( ‘twentyfifteen-style‘, get_stylesheet_uri() );
Der „handle” wäre in diesem Fall twentyfifteen.
![Mit der Suchfunktion des Text-Editors ist der richtige „handle“ schnell gefunden.]()
Mit der Suchfunktion des Text-Editors ist der richtige „handle“ schnell gefunden.
Achte beim Code der functions.php auf exakte Schreibweise und darauf, dass innerhalb der einfachen Anführungszeichen keine Leerzeichen vorkommen. Das sind die häufigsten Fehlerquellen.
<?php
function elterntheme_child_styles() {
wp_deregister_style(‚elterntheme-style‘);
wp_register_style(‘elterntheme-style’, get_template_directory_uri(). ‘/style.css’);
wp_enqueue_style(‘elterntheme-style’, get_template_directory_uri(). ‘/style.css’);
wp_enqueue_style(‘childtheme-style’, get_stylesheet_directory_uri().’/style.css’, array(‘elterntheme-style’) );
}
add_action( ‘wp_enqueue_scripts’, ‘elterntheme_child_styles’ );
?>
![Die richtige Integration der CSS-Styles aus dem Eltern-Theme ist der einige etwas kompliziertere Teil beim Anlegen eines Child-Themes.]()
Die richtige Integration der CSS-Styles aus dem Eltern-Theme ist der einige etwas kompliziertere Teil beim Anlegen eines Child-Themes.
Damit alles korrekt abläuft, melden die aufgeführten Code-Zeilen zunächst die CSS-Definitionen des Eltern-Themes bei WordPress ab, um sie dann im Anschluss zusammen mit dem Child-Theme-CSS wieder in der richtigen Reihenfolge abzumelden. Zusätzlich deckt dieser Code in den meisten Fällen die Situation ab, dass manche Eltern-Themes die CSS-Definitionen auf mehr Dateien als nur die style.css aufteilen.
Übrigens: Die früher verwendete Methode, die CSS-Datei des Eltern-Themes über @import in der style.css zu integrieren, wird von WordPress nicht mehr empfohlen. Sie hat vor allem Performance-Nachteile.
4) Child-Theme aktivieren
Jetzt ist das Child-Theme grundsätzlich einsatzfähig, daher aktivieren wir es in der Admin-Oberfläche im Menüpunkt Design – Themes.
![Ein Klick genügt und Dein neues Child-Theme ist aktiv.]()
Ein Klick genügt und Dein neues Child-Theme ist aktiv.
Es ändert sich nun erst einmal gar nichts, jedenfalls nichts Sichtbares, denn noch hast Du ja keine Änderungen im Child-Theme vorgenommen. Um zu sehen, ob Du erfolgreich warst, öffne die style.css und füge dort eine neue Formatierung ein, beispielsweise:
body { color: blue; }
Nach Speichern der veränderten style.css am Server sollte nun der Fließtext auf Deiner Website in blau erscheinen.
![Analyse-Werkzeuge wie die Entwicklertools in Googles Chrome-Browser helfen bei der Fehlersuche.]()
Analyse-Werkzeuge wie die Entwicklertools in Googles Chrome-Browser helfen bei der Fehlersuche.
Zur Fehlersuche kannst Du beispielsweise die Entwickler-Tools des Chrome-Browsers oder die Firebug-Extension für Firefox verwenden. Aber wenn Du Dich mit Design-Änderungen beschäftigst, dann kennst Du das wahrscheinlich ohnehin schon.
Falls Du in WordPress mit eigenen Menüs arbeitest, gibt es nach Aktivierung eines Child-Themes manchmal Probleme. Die behebst Du ganz einfach, wenn Du unter Design – Menüs das jeweilige Menü auswählst und einmal auf Menü speichern klickst.
![Sofern vorhanden, solltest Du individuelle Menüs nach Aktivierung des Child Themes einmal neu speichern.]()
Sofern vorhanden, solltest Du individuelle Menüs nach Aktivierung des Child Themes einmal neu speichern.
5) Systematik von Child-Themes
Die beiden Dateien style.css und functions.php haben in Child-Themes eine Sonderstellung: Die Einträge dort lädt WordPress zusätzlich zu den äquivalenten Dateien des Eltern-Themes. Zunächst werden also alle Anweisungen und Formatierungen aus den beiden Dateien des Eltern-Themes geladen, danach zusätzlich diese beiden Dateien aus dem Child-Theme.
Bei der functions.php musst Du daher beachten, dass Du keine PHP-Funktionen oder Variablen verwendest, die schon im Eltern-Theme vorkommen. Einträge in der style.css überschreiben dagegen schlicht und einfach entsprechende Formatierungsanweisungen aus dem Eltern-Theme.
Alle anderen Dateien, die Du in Deinem Child-Theme einsetzt, ersetzen die äquivalenten Dateien des Eltern-Themes komplett. Sie werden anstatt und nicht zusätzlich zu den Dateien aus dem Eltern-Theme geladen. WordPress prüft also, ob eine entsprechende Datei im Child-Theme vorhanden ist und gibt selbiger gegebenenfalls den Vorzug.
![Alle Dateien mit Ausnahme von style.css und functions.php ersetzen die Dateien des Eltern-Themes komplett.]()
Alle Dateien mit Ausnahme von style.css und functions.php ersetzen die Dateien des Eltern-Themes komplett.
Willst Du beispielsweise im Header-Bereich Deiner Website etwas umgestalten, kopierst Du die header.php des Eltern-Themes in Dein Child-Theme und veränderst die Datei im Child-Theme entsprechende Deinen Wünschen.
6) Theme-Updates prüfen
Du hast jetzt alle Möglichkeiten in der Hand, um Gestaltung und Funktionalität Deines WordPress-Themes zu verändern, ohne das zu Grunde liegende Eltern-Theme anzufassen. Selbiges kannst Du also bedenkenlos aktualisieren, wenn Updates dazu erscheinen.
Aber natürlich entwickelt sich jedes Theme auch weiter, sodass Updates durchaus auch Veränderungen betreffen können, die Du im Child-Theme gemacht hast. Ebenso zu bedenken: Dateien aus dem Eltern-Theme, die Du übernommen und verändert hast, könnten Sicherheitslücken enthalten, die auch beim Update des Eltern-Themes nicht behoben werden, weil WordPress weiterhin die – dann veraltete – Kopie in Deinem Child-Theme verwendet.
![Sicherheitshalber vor einem Update prüfen: Veränderungen im Eltern-Theme.]()
Sicherheitshalber vor einem Update prüfen: Veränderungen im Eltern-Theme.
Deshalb ist es wichtig, dass Du bei jedem Update des Eltern-Themes in dessen Dokumentation schaust und prüfst, was sich dort verändert hat, um nötigenfalls auch Dein Child-Theme anzupassen.
7) Minimal-Prinzip
Der wichtigste Tipp für Child-Themes lautet daher: Beschränke Dich bei Veränderungen auf das absolut nötige. Je weniger Eltern-Theme-Dateien Du übernimmst und je weniger Veränderungen Du am Design vornimmst, desto unwahrscheinlicher sind spätere Konflikte und desto unwahrscheinlicher musst Du bei Theme-Updates Anpassungen vornehmen.
Das geringste Konflikt-Potenzial haben die CSS-Anweisungen in der style.css. Wenn Du also mit Anpassungen ausschließlich hier auskommst, kannst Du Dir eine umfangreichere Prüfung von Theme-Updates sparen.
8) Theme-Preview erstellen
Du wirst es bemerkt haben: In der Übersicht der verfügbaren Themes in der WordPress-Admin-Oberfläche präsentiert sich Dein Child-Theme ziemlich schmucklos. Willst Du dort ein hübsches Bild oder einen Screenshot Deines Themes hinterlegen, ist das ganz einfach.
![Das Preview für das Child-Theme zeigt WordPress an, wenn im Theme-Verzeichnis die entsprechende Datei namens screenshot.png vorhanden ist.]()
Das Preview für das Child-Theme zeigt WordPress an, wenn im Theme-Verzeichnis die entsprechende Datei namens screenshot.png vorhanden ist.
Erzeuge einen Screenshot Deines Themes und lege selbigen in der Größe 880×660 Pixel mit dem Dateinamen screenshot.png im Bildformat PNG ins Stammverzeichnis Deines Child-Themes. WordPress erkennt das automatisch und zeigt Dir nun auch Dein Child-Theme in der Übersicht optisch ansprechend dar.
Viel Spaß beim Gestalten!
Child-Themes werden gerne unterschätzt, sind aber ein sehr mächtiges und praktisches Feature von WordPress. Du hast damit alle Freiheiten, das Theme anzupassen, ohne das Haupt-Theme zu verändern. Beachten musst Du lediglich, dass zu viele und zu umfassende Veränderungen irgendwann dennoch zu Konflikten führen werden. In solchen Fällen kann es sinnvoll sein, lieber gleich zu einem anderen Theme zu wechseln, das schon in seiner Grundstruktur besser zu Deinen Anforderungen passt. Für kleinere Design-Anpassungen sind Child-Themes dagegen sehr unkompliziert und sicher.