WordPress Childthemes

Kinder sind dumm?
Nein, bei WordPress sind sie sogar sehr nützlich.

Jeder kennt das Problem, dass er er gerne ein eigenes Theme für seinen WordPress Blog nutzen will und daher auch viele Stunden Arbeit aufwendet, um das Wunschtheme noch so anzupassen, wie man es haben will.

Doch spätestens nach einem Update des Themes verfällt man der Panik, da alle gemachten Änderungen durch das Update vernichtet sind und man vom alten Theme kein Backup gemacht hat.

Allerdings gibt es hier eine sehr nützliche Funktion in WordPress, die gerade Neulinge nicht kennen.
Parent- und Childthemes.

Alle meine Themes die ich persönlich verwende, sind ein Childtheme der im WordPress Paket enthaltenen Standardthemes, oder Childthemes von Kostenlos erhältichen Themes.

Ich habe mich aus dem Grund für Childthemes entschieden, damit meine Style Änderungen auch bei Themeupdates erhalten bleiben.

Das Erstellen und Verwenden eines Childtheme ist so simpel, dass es wohl immer sehr gerne vernachlässigt wird.
Man muss eigentlich nicht viel machen, um von seinem Wunschtheme ein Childtheme anzufertigen.

Ich beschreibe mal, wie es beim Twentyeleven geht;

1. Man legt im Theme-Ordner einen Ordner mit seinem Wunschnamen an, wie zum Beispiel My_Twentyeleven.
2. Man erstellt mittels Texteditor eine .css Datei Namens style.css mit folgenden Header Inhalt.

/*
Theme Name: MY_Twentyeleven
Theme URI: http://your-domain.tdl
Author: You
Author URI: http://your-domain.tdl
Description: Put your themedescription here
Template: twentyeleven
Version: 1.0
License: GNU General Public License
License URI: license.txt
Tags: Put your Tags for the theme here
*/

In der style.css des Child Themes können dann alle Layout Änderungen einprogrammiert werden, die einem so einfallen.

Früher wurde der Aufruf des Parent Themes über die style.css des Child Themes geregelt, das hat sich allerdings im Laufe der Updates und der Weiterentwicklung von WordPress geändert, so dass die style.css nunmehr mittels functions.php im Childtheme Ordner angesteuert wird.

Für das Child Theme müssen wir also zusätzlich eine functions.php anlegen, welche folgenden Inhalt hat;

add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
 wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

In der functions.php des Childtheme können dann zudem noch alle gewünschten Zusatzfunktionen einprogrammiert werden.

Beide Dateien werden im überigen beim Aufruf der Webseite zusätzlich zu der style.css und der functions.php des Parent berücksichtigt.

Dann kann das Theme auch schon über das Adminpanel (Design/Themes) aktiviert werden.

Nun komme ich mal kurz zu der Zeile Template: twentyeleven.

Diese Zeile ist insbesondere wichtig, da WordPress eine integrierte Hirachie Abfrage beinhaltet, die prüft, welche Datei ist im Ordner My_Twentyeleven vorhanden und welche Datei muss aus dem Parent-Theme Ordner twentyeleven verwendet werden.
Dieses ist sehr hilftreich, da man ja nicht nur Styleänderungen vornehmen will, sondern auch diverse andere Anpassungen, wie zum Beispiel Funktionen anders aufbauen will, oder neue Funktionen in seine Seite einbauen, oder herausnehmen will.

Will man zum Beispiel Änderungen an der comments.php vornehmen, kopiert man einfach die Datei comments.php in den Ordner My_Twentyeleven und bearbeitet die Datei dann dort.
WordPress ruft dann beim Seitenaufruf die geänderte comments.php Datei aus unserem Childtheme auf und ignoriert dann die Original comments.php im Ordner Twentyeleven.
Das kann man im Grunde genommen mit jeder im Theme enthaltenen Datei machen und hat den Vorteil, dass im Childtheme NUR die Dateien verwendet werden, die man geändert hat und diese Dateien bleiben bei einem Update des Parent-Theme erhalten.

Natürlich hat die Sache auch einen Haken.
Wenn Funktionen von WordPress wegfallen, oder sich ändern und diese Änderungen im Originaltheme auch berücksichtigt werden mussten, dann könnte es sein, dass das Childtheme nicht mehr richtig läuft und auch angepasst werden muss.

Noch etwas zur style.css;

Manchmal muss man WordPress zwingen, eine Style Änderung zu akzeptieren.
Dieses kann dann mit der !important Anweisung in der style.css erreicht werden, da dann der Eintrag in der Original style.css ignoriert wird.
Beispiel;

#access {
background: url("images/line.png") !important;
margin: 0 0 6px;
width: 100%;
}

Das ist allerdings nur eine quick’n dirty Lösung. Notfalls sollte man besser versuchen eine neue Klasse zu definieren und dann die benötigten .php Dateien, welche die alte Klasse verwenden  in den Childtheme Ordner zu kopieren und anzupassen.

Viel Spaß beim herumprobieren. Ich hoffe ich konnte hier das verwenden von Childthemes ein wenig erläutern.