Ein Child-Theme für WordPress erstellen am Beispiel vom Twentysixteen Theme

In diesem Tutorial erstellen wir auf Basis des WordPress Themes Twentysixteen ein einfaches Child-Theme. Mit Child-Themes lässt sich hervorragend ein Theme optisch anpassen oder auch im Funktionsumfang erweitern.

Dabei wird alles was schon im Child-Theme vorhanden ist auch vom Child-Theme geladen, die übrigen Theme-Teile werden dann vom Parent-Theme geladen.

Was wird für ein Child-Theme mindestens benötigt?

Es wird zuallerst mal mindestens ein Theme-Ordner ( zB twentysixteen-child ) indem sich die Datei style.css befindet benötigt. Diese benötigt natürlich, wie jedes andere Theme auch, einen Stylesheet-Header. Dieser könnte für dieses Beispiel so aussehen.

/*
Theme Name:   Twenty Sixteen Child
Theme URI:    https://zoechbauer.name/ein-child-theme-fuer-wordpress-erstellen-am-beispiel-vom-twentysixteen-theme/
Description:  Twenty Sixteen Child Theme
Author:       Zöchbauer Manfred
Author URI:   https://zoechbauer.name
Template:     twentysixteen
Version:      1.0.0
License:      GNU General Public License v2 or later
License URI:  http://www.gnu.org/licenses/gpl-2.0.html
Tags:         child, theme, ....
Text Domain:  twenty-sixteen-child
*/

Die wichtigste Zeile ist hierbei folgende.

Template:     twentysixteen

Anhand dieser Zeile weis das Child-Theme wo sich das Parent-Theme befindet. Dies ist allerdings nur die Mindestvoraussetzung für die alte Methode.

Die alte Methode

Sie funktioniert natürlich nach wie vor. Dabei wird in der style.css des Child-Themes die style.css des Parent-Themes per @import_url() geladen – zB:

@import url('../twentysixteen/style.css');

Empfohlen wird allerdings schon einige Zeit die neue Methode.

Die neue Methode

Im Vergleich zur alten Methode wird das Parent-Stylesheet nicht mehr per @import_url() geladen sondern über die functions.php. Diese Methode erweitert natürlich auch die Mindestvoraussetzung um die Datei functions.php, welche sich natürlich ebenfalls im Child-Theme-Ordner befinden muss.

Wie funktioniert die neue Methode?

Der Wordpress Codex lässt uns auch zu diesem Thema nicht im Stich – http://codex.wordpress.org/Child_Themes#How_to_Create_a_Child_Theme. Mit get_template_directory_uri() können wir die style.css des Parent-Themes laden, mit get_stylesheet_directory_uri() die style.css des Child-Themes. Dadurch ergibt sich folgender Inhalt für die functions.php des Child-Themes.

<?php

function twentysixteen_child_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'parent-style' ) );
}
add_action( 'wp_enqueue_scripts', 'twentysixteen_child_enqueue_styles' );

?>

Wenn wir jetzt in unserer style.css des Child-Themes irgenwelche Styles vornehmen so sehen wir nach dem speichern und neuladen der Webseite, dass wir erfolgreich Child-Theme angelegt haben.

Als kleine Ergänzung möchte ich noch erwähnen: Ein Child-Theme von einem Child-Theme funktioniert, zumindest derzeit, NICHT! Es muss hierfür immer ein Elterntheme (Parent-Theme) verwendet werden!

Ein Child-Theme in der Praxis nutzen

Nur das Stylesheet des Elternthemes zu laden ergibt keinen Sinn. Kommen wir zu einem Praxisbeispiel.

In diesem Beispiel möchte ich die Schriftart Font-Awesome über das Child-Theme laden und Icons davon einbinden. Dazu wird erst mal Font-Awesome heruntergeladen und im Child-Theme-Ordner entpackt (wie bei so vielem steht auch für Font-Awesome ein CDN zur Verfügung, was grundsätzlich vorzuziehen ist, da sich die Ladezeit der eigenen Webseite dadurch, je nach der Geschwindigkeit und Anbindung des eigenen Servers, teilweise erheblich verringern kann).

Die functions.php des Child-Themes ändert sich dadurch natürlich dementsprechend.

function twentysixteen_child_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'font-awesome-child', get_stylesheet_directory_uri() . '/font-awesome-4.5.0/css/font-awesome.min.css', array(), null );
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'parent-style', 'font-awesome-child' ) );
}
add_action( 'wp_enqueue_scripts', 'twentysixteen_child_enqueue_styles' );

Eine CDN-Version

function twentysixteen_child_enqueue_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'font-awesome-child', '//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css', array(), null );
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'parent-style', 'font-awesome-child' ) );
}
add_action( 'wp_enqueue_scripts', 'twentysixteen_child_enqueue_styles' );

Jetzt werde ich noch einen kleinen Slogan zum Theme hinzufügen. Dazu kopieren wir für dieses Beispiel die header.php vom Twentysixteen Theme in das Child-Theme und bearbeiten sie anschließend.

<?php if ( is_home() || is_front_page() ) { ?>
    <div id="mein-slogan">
        <p>Das ist der Slogan der Hauptseite<br>
            <i class="fa fa-coffee"> Trinken Sie auch so gerne Kaffee wie ich?</i>
        </p>
    </div>
<?php } ?>

Mit diesem Code in der header.php des Child-Themes lassen wir auf der Hauptseite diesen mehr oder weniger geistreichen Slogan anzeigen. Bei der Ansicht von Beiträgen, Seiten, Archiven usw. wird dieser nicht angezeigt. Wie auch immer – es funktioniert! Auch die style.css wurde noch ein bisschen ergänzt.

body {
    background-color: yellow;
    }
#mein-slogan {
    font-size: 2em;
    text-align: center;
    font-weight: bolder;
    }
#mein-slogan .fa {
    font-size: 1.5em;
    }

Genau nach diesem Schema würde sich alles mögliche zu dem Child-Theme hinzufügen lassen – zusätzliches Menü, Sidebar oder was auch immer.

Der wesentliche Vorteil von einem Child-Theme besteht aber darin, dass man nicht das Theme direkt bearbeitet. Auf diese Weise bleiben dann Änderungen bei einem Theme-Update auch erhalten.

Wer möchte kann sich das Twentysixteen Kaffee-Slogan Child-Theme auch gerne herunterladen, benutzen, oder erweitern. Selbstverständlich auf eigene Gefahr!

Download – twentysixteen-child




Bitte beachten Sie, dass dieser Beitrag bereits vor über einem Jahr geschrieben wurde und unter umständen nicht mehr aktuell ist.