WordPress-Themes von Elmastudio erfreuen sich allseits großer Beliebtheit. Auch ich spreche gerne mal eine Empfehlung zugunsten dieser Theme-Schmiede aus, wenn mich jemand auf der Suche nach einem Theme um Rat fragt. Allerdings bin ich etwas zurückhaltend, wenn es um generelle Lobeshymnen auf die Themes der in Auckland, Neuseeland ansässigen Entwickler geht, vor allem, was den Code betrifft.
Bitte nicht falsch verstehen, dies soll kein Elmastudio-Bashing werden! Ich schätze die Produkte aus dem Hause Elmastudio sehr! Aber wie so oft gilt auch hier, dass auch Gutes noch verbessert werden kann. Dies will ich an einem kleinen Beispiel in diesem Artikel einmal zeigen:
Waipoua – ein fast perfektes Theme
Für ein neues Blogprojekt war ich auf der Suche nach einem optisch aufgeräumten Theme ohne viel Schnickschnack. Dafür bot sich das Theme Waipoua von Elmastudio in geradezu idealer Weise an. Das Theme ist nun beinahe auf den Tag genau drei Jahre alt. Drei Jahre sind, in Webdesign-Zeiträumen gedacht, eine lange Zeit. Dennoch wirkt das Theme immer noch zeitlos modern.
Ein paar Kleinigkeiten wollte ich optisch an diesem Theme trotzdem noch verändern und so entschied ich mich für eine ChildTheme-Lösung.
Waipoua, das Child Theme dazu und die Probleme damit
Erst vor etwa einem Monat erschien auf dem Elmastudio-Blog ein Artikel mit dem Titel „Ein WordPress Child-Theme anlegen – so geht’s richtig“. In diesem Artikel berichtet Ellen Bauer über den Wechsel von der CSS-Regel @import
zu dem auch im WordPress Codex empfohlenen Verfahren, das Stylesheet des Parent-Themes mittels des Hooks wp_enqueue_scripts
einzubinden.
Gegen Ende des Artikels schreibt Ellen noch:
Wie haben übrigens auch all unsere Elmastudio Beispiel Child-Theme Ordner mit der neuen Methode upgedatet. […]
Das liest sich auf den ersten Blick sehr gut. Der Web-Entwickler Torsten Landsiedel merkt aber prompt in einem Kommentar zu dem Artikel an:
[…] da wp_enqueue_styles die Styles im wp_head() aufruft ergibt diese neue Lösung bei den Child-Themes für die älteren Themes (Baylys, Bugis, Kerikeri, Meola, Nilmini, Nori, Piha, Pohutukawa, Tatami, Waipoua) allerdings keinen Sinn. Denn in diesen Themes wird durch den Direktaufruf über bloginfo( ‘stylesheet_url’ ) ja jetzt *zuerst* das Child-Theme aufgerufen und erst danach im wp_head-Aufruf das CSS des Eltern-Themes, welches eigentlich überschrieben werden sollte. Das ist aber bei dieser Reihenfolge der Stylesheet-Daten nicht mehr richtig möglich (bzw. nur durch haufenweise !important).
[…]
Diese zuletzt erwähnte Methode wird auch in der style.css
des neuen Waipoua-Child-Themes empfohlen:
/* Now you can start adding your own styles here. Use !important to overwrite styles if neccessary. */
Das ist aus meiner Sicht allerdings ein extrem suboptimaler Workaround.
Eine bessere Lösung für Waipoua
Wie Torsten Landsiedel bereits richtig analysiert hat, liegt das Problem darin, dass in der header.php
des Original-Themes das Stylesheet fest kodiert aufgerufen wird:
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?/>" />
Die Lösung ist also relativ einfach und besteht aus folgenden Schritten:
- Die originale
header.php
aus demwaipoua
-Ordner in den Child-Theme-Ordner kopieren. - Die oben gezeigte Zeile (Zeile 40) aus der
header.php
löschen und die Datei speichern. - Die
functions.php
des Child-Themes muss wie folgt (Zeile 13) erweitert werden:
<?php /** * Waipoua child theme functions and definitions */ /*-----------------------------------------------------------------------------------*/ /* Include the parent and child theme style.css /*-----------------------------------------------------------------------------------*/ add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css' ); }
Bis zu einem Update des Waipoua-Themes ist dies wahrscheinlich der geeignetste Workaround, um ein Child-Theme sinnvoll einsetzen zu können. Dies gilt sinngemäß auch für alle anderen Elmastudio-Themes, bei denen das Stylesheet ebenfalls fest kodiert in der header.php
aufgerufen wird.
24. Mai 2015 um 15:01 Uhr
Danke für den Artikel. Damit verstehen hoffentlich einige Nutzer, was genau das „Problem“ an der alten Lösung war.
Prinzipiell war das Problem aber nicht ein Fehler von Elmastudio. Denn noch bis Ende letzten Jahres stand eben im offiziellen WordPress CODEX genau die Vorgehensweise, die Elmastudio damals eingesetzt hat. Sie haben sich also an die damals gültigen Vorgaben gehalten.
Ich setze das Waipou Theme auch schon seit dessen erscheinen ein. Neben ein paar geänderten Farben war die einzige Änderung, die ich gemacht habe, genau die von dir beschriebene bzgl. der Einbindung des Child/Parent-Theme-CSS.
Zu der Empfehlung der Verwendung von „!important“ falls notwendig, kann man unterschiedlicher Meinung sein. Grundsätzlich ist es nicht wirklich notwendig, aber ich beobachte immer wieder bei Bekannten und Kollegen, dass sie nicht wissen, wieso ihre Änderungen am CSS keine Auswirkung haben. Natürlich wäre es besser, wenn sie sich dann etwas mehr in die Thematik bei CSS einlesen, aber ein „!important“ hilft meistens auch. Als Programmierer gefällt mir solcher Code zwar nicht unbedingt, aber solange es funktioniert ist es schwer, andere davon zu überzeugen, es „richtig“ zu machen 🙂
25. Mai 2015 um 11:16 Uhr
Nun, ursprünglich war die Art der Einbindung des Stylesheets kein Fehler. Das war für das Jahr 2012 durchaus in Ordnung. Ein Fehler war allerdings das neue Child-Theme, wordurch es zu einer unglücklichen Vermischung zweier Vorgehensweisen kam, die letztlich zu einer „Verschlimmbesserung“ führte.
Die
!important
-Regel ist das „Wer heilt, hat recht.“ der CSS-Programmierung … 😀3. Juni 2015 um 15:03 Uhr
Danke für die Erwähnung. Sehr schöne, verständliche Erklärung, die jeder einfach nachbauen kann. 🙂
Du kannst die Zeile übrigens noch etwas kürzer schreiben. Mit get_stylesheet_uri() kannst du direkt auf die style.css verlinken.
5. Juni 2015 um 10:39 Uhr
Danke für das Lob!
Und danke für den Hinweis auf
get_stylesheet_uri()
! Damit geht es tatsächlich noch ein wenig kürzer. Wobei ich zum Nachvollziehen für „Non-Cracks“ die längere Version ein wenig übersichtlicher finde.BTW: Sieht man sich die Tage in Köln?
26. Juli 2015 um 10:56 Uhr
Hallo Dave,
bei dem von mir gestern eingesetzten Theme Pohutukawa funktioniert das Child-Theme auch nach deiner Anleitung nicht. Sie werden im WP-Backend mit einer Fehlermeldung angezeigt:
„Die folgenden Themes sind installiert, aber nicht vollständig. Themes müssen ein Stylesheet und ein Template haben.
pohutukawa-child Es fehlt ein Stylesheet.“
Beides ist aber da!
styles.css
/*
Theme Name: Pohutukawa Child
Author: Marek
Author URI: http://www.burg-grundschule.de
Template: pohutukawa
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
/*
You can start adding your own styles here. Use !important to overwrite styles if needed. */
Die functions.php habe ich von dir übernommen und eingefügt, und bei der header.php habe ich die genannte Stelle entfernt.
Hast du eine Idee, woran es liegen kann?
Denn die Verzeichnisstruktur – sowie die Rechte – auf dem Server sind auch unauffällig:
|
|-pohutukawa
|-pohutukawa-child
Ich begreife es nicht!
Beste Grüße nach Berlin
Marek
26. Juli 2015 um 13:01 Uhr
Dave, ich habe den Fehler gefunden! Das CSS muss natürlich style.css und nicht styles.css lauten! Oh Mann… 😉
26. Juli 2015 um 22:19 Uhr
Hallo Marek,
freut mich, dass Du den Fehler selbst gefunden hast! Ich war heute den ganzen Tag unterwegs und bin eben erst wieder an einem Rechner. Ob ich allerdings das überzählige ’s‘ im Dateinamen sofort entdeckt hätte, weiß ich auch nicht …
25. August 2015 um 10:54 Uhr
Das ist wirklich ein sehr Schönes Theme, für 12€ kann man da auch nichts zu sagen, würde ich einen Blog haben würde ich es vielleicht auch nutzen.
7. August 2021 um 14:58 Uhr
Danke, hat mir auch 2021 noch geholfen, da ich unter anderem Tatami nutze!
8. August 2021 um 08:30 Uhr
Hallo Armin,
freut mich sehr, dass mein Artikel auch noch 6 Jahre, nachdem ich ihn verfasst habe, hilfreich war. Auf Deiner Seite nutzt Du ja ein Theme von Anders Norén. Auch das Theme dieses Blogs ist ein Child-Theme eines Anders-Norén-Themes. Seine Themes empfehle ich inzwischen sehr gerne und häufig.
Beste Grüße!