Du hast ein tolles Theme gefunden und möchtest nicht nur ein paar Farben oder Abstände ändern, sondern ein paar grundlegende Layout-Dinge umbauen? Prima, WordPress hat das großartige Child-Theme-Konzept für uns. So können wir Änderungen am Theme vornehmen ohne dass uns ein Update des Eltern-Theme die Änderungen überschreibt. Doch das ist Fluch und Segen zugleich, denn wenn ausgerechnet in dieser Datei eine Sicherheitslücke (oder ein anderes schwerwiegendes Problem oder eine Funktionserweiterung) ist, dann haben wir das Schlamassel. Die Änderung ist nicht auf der Website zu finden. Ein paar Ansätze und Ideen zur Lösung dieses Dilemmas.
Ich habe dazu bereits im Juni 2015 einen Vortrag beim WordCamp in Köln gehalten:
TL;DR:
Wer Child-Themes nutzt, ist für den Code in seinem Child-Theme nun selbst verantwortlich. Änderungen an überschriebenen Template-Dateien des Eltern-Theme müssen geprüft und gegebenenfalls im Child-Theme nachgetragen werden. Ein @import
zum Laden der Eltern-Theme-CSS-Datei sollte vermieden werden. Der bessere Weg ist ein einbinden per wp_enqueue_style. Noch besser ist die Lösung von Justin Tadlock, wo dies das Eltern-Theme selbst regelt.
Meine Lösung zu diesem Problem ist ein Plugin zum Verfolgen der Änderungen im Eltern-Theme. Child-Theme-Check. Es warnt uns, wenn veraltete Template-Versionen im Child-Theme existieren. Dafür bekommt jede Template-Datei im Theme eine Versionsnummer im Header. In dieser Form: @version 1.0.0
. Die Überprüfung der Versionsnummer findet dann per Plugin statt (später dann vielleicht auch im WordPress-Core). Die Technik stammt aus WooCommerce und befindet sich dort seit Version 2.1 im System Status. Zusätzlich können in meinem Plugin die Unterscheide zwischen den Template-Dateien per wp_text_diff()
angezeigt werden.
Die Entwicklung des Plugins findet auf Github statt und ich freue mich über jeden, der das Plugin ausprobiert und Fehler, Anmerkungen oder Ideen als Issue bei Github einträgt.
Die Reaktionen in Köln waren hervorragend und die neuen Elmastudio-Themes nutzen bereits die Versionsangabe im Header.
@zodiac1978 yes, I implemented this in all our newer themes. Will write a post about your plugin, too, shortly 🙂 #childthemeupdates #useful
— Ellen Bauer (@ellenbauer) 21. Dezember 2015
Aber international ist das Interesse an dem Plugin leider eher gering geblieben. Mein Kommentar im Smashing Magazine blieb unkommentiert. Eine Anfrage bei WP Tavern unbeantwortet. Das Theme Review Team fühlte sich nicht zuständig für Diskussionen über neue Requirements an Themes (also das notwendige @version
) und verwies mich an andere News-Blogs und darauf, dass ich einen zusätzlichen Check für das Theme-Check-Plugin schreiben sollte, inklusive Pull Request bei Github.
Wie kann ich die Idee und das Plugin noch weiter international bekannt machen? Ein Vortrag auf WordCamps in anderen Ländern? Beim WordCamp Europe? Ich freue mich über eure Ideen in den Kommentaren!
Eine englische Version meiner Slides habe ich auf jeden Fall schon mal als Start angefertigt … Please help me to spread the word! 🙂
Pingback: Neuer Check für das Theme-Check-Plugin › Torsten Landsiedel
Wirklich traurig dass das Plugin nicht so angenommen wird wie es sollte. Man würde doch meinen, die WordPress-Community wäre interessiert daran, das CMS sicherer zu machen, denn die Sicherheit ist ja eher ein Manko bei WP. Wahrscheinlich wäre das Echo ein ganz anderes, wäre das Plugin von einer amerikanischen WP-Koryphäe gekommen. Von daher mein Tipp: Schreib doch ein paar bekannte WP Entwickler an, vielleicht greift es einer auf und sorgt damit für den nötigen Anschub.
Ich werde es versuchen. Danke für den Tipp!
Hi Thorsten, der Child Theme Check ist eine sehr sehr gute Idee. Ich nutze es bei Woocom schon lange und wußte nicht, dass es das Plugin auch »normal« gibt. Ich werds gleich mal ausprobieren!
Vielen Dank. Freue mich über Feedback, wenn du es ausprobiert hast!
Pingback: Child Plugins: Plugins ohne Actions und Filter anpassen | Kau-Boys
Pingback: Child Plugins: Templates eines Plugins überschreiben | Kau-Boys
Pingback: Vorsicht, rutschig: Grenzerfahrung WordPress-Sicherheit - WP-Wartung24
Pingback: WordPress-Child-Plug-ins: Plug-ins in WordPress erweitern? So gehts!
Pingback: GeneratePress und theme.json: Mehr Einstellungsmöglichkeiten bei den Blöcken