Hier eine etwas umständliche und ausschweifende Erklärung, die aber vielleicht die Zusammenhänge besser erklärt:
Am besten lassen sich Child Themes verstehen, wenn man sie als Ergänzung des eigentlichen Themes sieht. Grundsätzlich kann ein Child Theme ganz ohne Templates auskommen (würde dann aber vermutlich wenig Sinn machen), aber jedes Template das man dem Child-Theme hinzufügt, ersetzt das Template des Parent Themes.
Beim Stylesheet ist es ein wenig anders. Zum einen enthält die style.css
Angaben über das Theme (den so genannten Theme Header), zum anderen hat man früher™ in diesem Child Theme mit einer @import-Regel das Stylesheet des Parent-Theme geladen und dieses dann durch weitere, eigene Regeln ergänzt bzw. geändert:
/*
Theme Name: Yoko Child
Theme URI: http: //deinedomain.de/
Description: Child Theme for the Yoko theme
Author: Dein Name
Author URI: http: //deinedomain.de/
Template: yoko
Version: 1.0
*/
@import url("../yoko/style.css");
/* ab hier eigene Style-Regeln */
Dabei gilt: später geladene CSS-Regeln (z.B. aus dem Child Theme) überschreiben früher geladene CSS-Regeln (aus dem Parent Theme) und spezifischere Regeln (z.B. body ul li a { color: red; }
) überschreiben allgemeinere (z.B. body { color: blue; }
) .
Neuerdings macht man das etwas anders, in dem man in der functions.php
eine Funktion hinzufügt, die das CSS des Parent Themes lädt. Das Ergebnis ist eine bessere Performance.
<?php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
Wenn dein Theme ein Blanko Child-Theme enthält, hat der Entwickler diese Programmierung bereits vorgenommen. Das bedeutet für dich, dass du dir lediglich darüber Gedanken machen musst, was denn nun eigentlich in deinem Child Theme anders sein soll. Deine ergänzenden CSS-Regeln kannst du dann direkt in die style.css
deines Child Themes schreiben. Wenn ein bestimmtes Template anders aussehen soll, kannst du das in dein Child-Theme kopieren und dann nach Herzenslust ändern.
Kniffelig wird es nur, wenn du auch Funktionen des Parent Theme ändern möchtest, da man nicht einfach die functions.php
des Parent Theme kopieren kann. Das liegt daran, dass Funktionen eindeutig benannt sein müssen – ein und denselben Namen im Parent und Child Theme zu verwenden geht schon mal nicht. Dafür gibt es aber die Hooks, also Schnittstellen für Funktionen. Ist eine Funktion mit add_action()
an einen bestimmten Hook gebunden, kann man sie im Child Theme mit remove_action()
wieder „entkoppeln“ und anschließend eine eigene Funktion (mit einem anderen Namen) wieder „anhängen“. Du merkst schon – das ist dann nicht ganz so trivial.
Wenn ich Websites erstelle und solche Änderungen habe, probiere ich sie erst einmal auf einem lokalen Webserver auf meinen eigenen Computer aus. Das erspart Anrufe von irritierten Kunden. 🙂
Das komplette Child Theme-Verzeichnis kann, wenn auf dem eigenen PC alles hübsch ist, entweder per FTP übertragen werden, oder man komprimiert es und nutzt den eingebauten Mechanismus von WordPress, um das Theme zu installieren. (Aktivieren nicht vergessen!)