SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
Das Child-Theme-
Dilemma
WordCamp Cologne 2015
Torsten Landsiedel
Hallo!
Torsten Landsiedel
WordPress-Webworker
Moderator im Supportforum
Mitglied im Redaktionsteam de.w.org
Translation Contributor und Editor
Co-Orga WP Meetup Hamburg
Co-Orga WordCamp Hamburg
@zodiac1978
Child-Themes-Nutzung
Wer hat schon mal Child-Themes genutzt?
Child-Themes-Nutzung
Warum?
Child-Theme-Probleme
Sicherheit
Erweiterungen
Geschwindigkeit
Sicherheitsprobleme
Eltern-Theme
search.php (mit
Sicherheitslücke)
Child-Theme
search.php (mit
Sicherheitslücke)
Eltern-Theme
search.php (ohne
Sicherheitslücke)
Child-Theme
search.php (mit
Sicherheitslücke)
Update
Überschreibt
Kein Update!Überschreibt
Erweiterungsmöglichkeiten
Pluggable Functions:
if ( ! function_exists( 'theme_special_nav' ) ) {
function theme_special_nav() {
// Do something.
}
}
Aber Achtung!
Jetzt muss der Code selber gewartet werden!
Fehlende
Erweiterungsmöglichkeiten
Framework-Theme + Kauf-Child-Theme?
WordPress.org-Theme + Child-Theme?
Wohin mit den eigenen Anpassungen?
Es gibt keine Grandchild-Themes :(
Fehlende
Erweiterungsmöglichkeiten
Warum sollte es keine Grandchild-Themes geben?
Fehlende
Erweiterungsmöglichkeiten
This idea of releasing advanced child themes just creates
the same problem child themes were meant to solve:
upgradability.
– Justin Tadlock
http://justintadlock.com/archives/2010/08/16/frameworks-parent-child-
and-grandchild-themes
Performance-Probleme
Viele Child-Themes nutzen @import
@import url(../parent-theme/style.css);
Ein @import verhindert paralleles Laden
in allen Browsern.
http://www.stevesouders.com/blog/2009/04/09/dont-use-import/
Lösung:
Style de-registrieren und Parent- und Child-Styles neu
registrieren und enqueuen
function twentytwelve_child_scripts() {
wp_deregister_style( 'twentytwelve-style' );
wp_register_style( 'twentytwelve-style',
get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'twentytwelve-child-style',
get_stylesheet_uri(), array( 'twentytwelve-style' ) );
}
add_action( 'wp_enqueue_scripts', 'twentytwelve_child_scripts', 11 );
Performance-Probleme
Noch einfacher:
Parent Style enqueuen. Fertig. Funkioniert dann, wenn
get_stylesheet (und nur das) im Parent genutzt wird.
// Faster than @import
add_action( 'wp_enqueue_scripts', 'my_child_theme_scripts' );
function my_child_theme_scripts() {
wp_enqueue_style( 'parent-theme-css', get_template_directory_uri() .
'/style.css' );
}
Performance-Probleme
Performance-Probleme
Neues Problem:
Viele Themes sind dafür leider nicht gebaut.
Stylesheet sind hart codiert in header.php:
<link rel="stylesheet" type="text/css" media="all"
href="<?php bloginfo( 'stylesheet_url' ); ?>" />
(Ältere Elmastudio-Themes machen das leider auch …)
Performance-Probleme
Oder das Theme ist inkompatibel zu Child-Themes
gebaut (durch Nutzung von get_stylesheet_directory()
im Eltern-Theme z.B.)
Oder das de-registrieren ist etwas komplizierter:
wp_enqueue_style( 'base_styles',
get_template_directory_uri() . '/css/base.css' );
wp_enqueue_style( 'responsive_styles',
get_template_directory_uri() . '/css/mobile.css' );
wp_enqueue_style( 'ie_styles',
get_template_directory_uri() . '/css/ie.css' );
Performance-Probleme
Komplizierter für Anfänger:
alles raus und in richtiger Reihenfolge wieder rein ...
Performance-Probleme
Justin Tadlocks geniale Lösung im Eltern-Theme:
function my_enqueue_styles() {
/* If using a child theme, auto-load the parent theme style. */
if ( is_child_theme() ) {
wp_enqueue_style( 'parent-style',
trailingslashit( get_template_directory_uri() ) . 'style.css' );
}
/* Always load active theme's style.css. */
wp_enqueue_style( 'style', get_stylesheet_uri() );
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_styles' );
http://justintadlock.com/archives/2014/11/03/loading-parent-styles-for-child-themes
Hey Torsten!
Trink’ mal einen Schluck Wasser.
Sprich nicht zu schnell.
Und frag’ mal, ob alle mitkommen.
:)
Child-Theme-Probleme
Sicherheit
Erweiterungen
Geschwindigkeit ✓
Idee 1: Child Theme Lite
“Child themes from theme developers should be nothing
more than a stylesheet and a few functions.”
– Justin Tadlock
http://justintadlock.com/archives/2010/08/16/frameworks-parent-child-and-grandchild-themes
Idee 1: Child Theme Lite
Child Theme darf nur functions.php und
style.css enthalten.
Alle Änderungen am Theme werden nur
per Hook oder Filter gemacht.
Das passiert ausschließlich per Plugin.
Das Child-Theme bleibt updatefähig.
Idee 1: Child Theme Lite
Problem:
Wieviele Themes bieten so etwas an?
Idee 2: Child Theme Template Check
Jede Template-Datei im Theme bekommt eine
Versionsnummer im Header.
@version 1.0.0
Überprüfung der Versionsnummer per Plugin
(oder noch besser per WordPress-Core).
Unterscheide aufzeigen per wp_text_diff().
Idee 2: Child Theme Template Check
DEMO!
Child Theme Template Check
Voilá!
Child Theme Template Check
Child Theme Template Check
https://github.com/Zodiac1978/tl-template-checker
- This is a Twitter opportunity! -
Child-Theme-Probleme
Sicherheit ✓
Erweiterungen (✓)
Geschwindigkeit ✓
● Ist Werkzeuge der richtige Ort, oder wäre Design der bessere
Ort für den Menüpunkt?
● Issue auf Github eröffnen:
https://github.com/Zodiac1978/tl-template-checker/issues
Mitmachen? Gerne!
Danke für euer Feedback!
Diskussion!
Fragen? Gegenmeinungen? Alternative Lösungen?
Theme-Shop/Theme-Entwickler und
Interesse an der Umsetzung?
Lasst uns darüber sprechen!
@zodiac1978
http://torstenlandsiedel.de/kontakt
Danke für eure Zeit!
Kommt gut nach Hause! :)

Weitere ähnliche Inhalte

Andere mochten auch

Sicher bloggen mit WordPresse - CMS absichern
Sicher bloggen mit WordPresse - CMS absichernSicher bloggen mit WordPresse - CMS absichern
Sicher bloggen mit WordPresse - CMS absichernSven Trautwein
 
Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...
Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...
Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...Hutter Consult AG
 
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]Felix Beilharz ✓
 
Die ersten Schritte mit Google+
Die ersten Schritte mit Google+Die ersten Schritte mit Google+
Die ersten Schritte mit Google+beebop media
 
State of the Word 2015, WordCamp US
State of the Word 2015, WordCamp USState of the Word 2015, WordCamp US
State of the Word 2015, WordCamp USphotomatt
 
Kevin Indig - SEO and Growth Hacking
Kevin Indig - SEO and Growth HackingKevin Indig - SEO and Growth Hacking
Kevin Indig - SEO and Growth HackingKevin Indig
 
WordPress Security - WP Meetup München 24.9.2015
WordPress Security - WP Meetup München 24.9.2015WordPress Security - WP Meetup München 24.9.2015
WordPress Security - WP Meetup München 24.9.2015stk_jj
 
We are WP, we are legion - WP Camp 2013 Berlin
We are WP, we are legion - WP Camp 2013 BerlinWe are WP, we are legion - WP Camp 2013 Berlin
We are WP, we are legion - WP Camp 2013 Berlinstk_jj
 
Wordpress für Profis
Wordpress für ProfisWordpress für Profis
Wordpress für ProfisAnika Erdmann
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 

Andere mochten auch (12)

Sicher bloggen mit WordPresse - CMS absichern
Sicher bloggen mit WordPresse - CMS absichernSicher bloggen mit WordPresse - CMS absichern
Sicher bloggen mit WordPresse - CMS absichern
 
Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...
Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...
Facebook Marketing | Global Pages & Parent Child - Die Lösung von Facebook fü...
 
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
7 SEO Einsteiger-Tipps [SEODAY 2014, Felix Beilharz]
 
Die ersten Schritte mit Google+
Die ersten Schritte mit Google+Die ersten Schritte mit Google+
Die ersten Schritte mit Google+
 
State of the Word 2015, WordCamp US
State of the Word 2015, WordCamp USState of the Word 2015, WordCamp US
State of the Word 2015, WordCamp US
 
Kevin Indig - SEO and Growth Hacking
Kevin Indig - SEO and Growth HackingKevin Indig - SEO and Growth Hacking
Kevin Indig - SEO and Growth Hacking
 
WordPress Security - WP Meetup München 24.9.2015
WordPress Security - WP Meetup München 24.9.2015WordPress Security - WP Meetup München 24.9.2015
WordPress Security - WP Meetup München 24.9.2015
 
We are WP, we are legion - WP Camp 2013 Berlin
We are WP, we are legion - WP Camp 2013 BerlinWe are WP, we are legion - WP Camp 2013 Berlin
We are WP, we are legion - WP Camp 2013 Berlin
 
WordPress Grundlagen Kurs
WordPress Grundlagen KursWordPress Grundlagen Kurs
WordPress Grundlagen Kurs
 
Wordpress für Profis
Wordpress für ProfisWordpress für Profis
Wordpress für Profis
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 

Ähnlich wie Das Child-Theme-Dilemma

Arbeiten mit Childthemes
Arbeiten mit ChildthemesArbeiten mit Childthemes
Arbeiten mit ChildthemesKirstenSchelper
 
Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...
Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...
Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...Monika Thon-Soun
 
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinWordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinDavid Decker
 
WordPress Themes – ein Rundumschlag
WordPress Themes – ein RundumschlagWordPress Themes – ein Rundumschlag
WordPress Themes – ein RundumschlagCaspar Hübinger
 
Entwicklungsautomatisierung
EntwicklungsautomatisierungEntwicklungsautomatisierung
EntwicklungsautomatisierungNecara GmbH
 
Genesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 KölnGenesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 KölnDavid Decker
 
Wie? Mein WordPress-Theme geht auch barrierefrei!
Wie? Mein WordPress-Theme geht auch barrierefrei!Wie? Mein WordPress-Theme geht auch barrierefrei!
Wie? Mein WordPress-Theme geht auch barrierefrei!Sylvia Egger
 
PHP Templating Engines by Martin Sotirov - 20160217
PHP Templating Engines by Martin Sotirov - 20160217PHP Templating Engines by Martin Sotirov - 20160217
PHP Templating Engines by Martin Sotirov - 20160217wpmeetupka
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne rootcusy GmbH
 
Childthemes 2
Childthemes 2Childthemes 2
Childthemes 2pixolin
 
Jtl_connect jtl_shop_evo_template_best_practices
Jtl_connect jtl_shop_evo_template_best_practicesJtl_connect jtl_shop_evo_template_best_practices
Jtl_connect jtl_shop_evo_template_best_practicesJTL-Software
 
WordPress Meetup Karlsruhe Feb 2016
WordPress Meetup Karlsruhe Feb 2016WordPress Meetup Karlsruhe Feb 2016
WordPress Meetup Karlsruhe Feb 2016wpmeetupka
 
WordPress CMS - WebMontag Chemnitz Oktober 2011
WordPress CMS - WebMontag Chemnitz Oktober 2011WordPress CMS - WebMontag Chemnitz Oktober 2011
WordPress CMS - WebMontag Chemnitz Oktober 2011David Decker
 

Ähnlich wie Das Child-Theme-Dilemma (16)

Arbeiten mit Childthemes
Arbeiten mit ChildthemesArbeiten mit Childthemes
Arbeiten mit Childthemes
 
Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...
Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...
Actions und Hooks im Theme. Super, total falsch, notwendiges Übel...
 
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 BerlinWordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
WordPress Plugins und Themes übersetzbar machen - WP Camp 2012 Berlin
 
WordPress Themes – ein Rundumschlag
WordPress Themes – ein RundumschlagWordPress Themes – ein Rundumschlag
WordPress Themes – ein Rundumschlag
 
Entwicklungsautomatisierung
EntwicklungsautomatisierungEntwicklungsautomatisierung
Entwicklungsautomatisierung
 
Mit WordPress durchstarten
Mit WordPress durchstartenMit WordPress durchstarten
Mit WordPress durchstarten
 
Genesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 KölnGenesis Framework - WordCamp Deutschland 2011 Köln
Genesis Framework - WordCamp Deutschland 2011 Köln
 
Wie? Mein WordPress-Theme geht auch barrierefrei!
Wie? Mein WordPress-Theme geht auch barrierefrei!Wie? Mein WordPress-Theme geht auch barrierefrei!
Wie? Mein WordPress-Theme geht auch barrierefrei!
 
PHP Templating Engines by Martin Sotirov - 20160217
PHP Templating Engines by Martin Sotirov - 20160217PHP Templating Engines by Martin Sotirov - 20160217
PHP Templating Engines by Martin Sotirov - 20160217
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne root
 
Childthemes 2
Childthemes 2Childthemes 2
Childthemes 2
 
Drupal und twig
Drupal und twigDrupal und twig
Drupal und twig
 
Jtl_connect jtl_shop_evo_template_best_practices
Jtl_connect jtl_shop_evo_template_best_practicesJtl_connect jtl_shop_evo_template_best_practices
Jtl_connect jtl_shop_evo_template_best_practices
 
WordPress Meetup Karlsruhe Feb 2016
WordPress Meetup Karlsruhe Feb 2016WordPress Meetup Karlsruhe Feb 2016
WordPress Meetup Karlsruhe Feb 2016
 
WordPress CMS - WebMontag Chemnitz Oktober 2011
WordPress CMS - WebMontag Chemnitz Oktober 2011WordPress CMS - WebMontag Chemnitz Oktober 2011
WordPress CMS - WebMontag Chemnitz Oktober 2011
 
Gutenberg Theme Entwicklung leicht gemacht
Gutenberg Theme Entwicklung leicht gemachtGutenberg Theme Entwicklung leicht gemacht
Gutenberg Theme Entwicklung leicht gemacht
 

Mehr von Torsten Landsiedel

Das Health Check Plugin in der Praxis
Das Health Check Plugin in der PraxisDas Health Check Plugin in der Praxis
Das Health Check Plugin in der PraxisTorsten Landsiedel
 
UX-Probleme mit dem neuen Block-Editor (Gutenberg)
UX-Probleme mit dem neuen Block-Editor (Gutenberg)UX-Probleme mit dem neuen Block-Editor (Gutenberg)
UX-Probleme mit dem neuen Block-Editor (Gutenberg)Torsten Landsiedel
 
Werde Übersetzer! Werde Translation Editor!
Werde Übersetzer!  Werde Translation Editor!Werde Übersetzer!  Werde Translation Editor!
Werde Übersetzer! Werde Translation Editor!Torsten Landsiedel
 
Die schmutzige Seite von WordPress
Die schmutzige Seite von WordPressDie schmutzige Seite von WordPress
Die schmutzige Seite von WordPressTorsten Landsiedel
 
The Child Theme Dilemma (EN) - Milano Edition
The Child Theme Dilemma (EN) - Milano EditionThe Child Theme Dilemma (EN) - Milano Edition
The Child Theme Dilemma (EN) - Milano EditionTorsten Landsiedel
 
Umgang mit Frustration im Open-Source-Projekt WordPress
Umgang mit Frustration im Open-Source-Projekt WordPressUmgang mit Frustration im Open-Source-Projekt WordPress
Umgang mit Frustration im Open-Source-Projekt WordPressTorsten Landsiedel
 
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden binWie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden binTorsten Landsiedel
 
Social Media Menüs in WordPress
Social Media Menüs in WordPressSocial Media Menüs in WordPress
Social Media Menüs in WordPressTorsten Landsiedel
 
HTML/CSS-Validierung in Zeiten von HTML5
HTML/CSS-Validierung in Zeiten von HTML5HTML/CSS-Validierung in Zeiten von HTML5
HTML/CSS-Validierung in Zeiten von HTML5Torsten Landsiedel
 
Shortcodes erstellen mit WordPress
Shortcodes erstellen mit WordPressShortcodes erstellen mit WordPress
Shortcodes erstellen mit WordPressTorsten Landsiedel
 
WordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in BerlinWordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in BerlinTorsten Landsiedel
 
Podcasting mit WordPress.com-Blogs
Podcasting mit WordPress.com-BlogsPodcasting mit WordPress.com-Blogs
Podcasting mit WordPress.com-BlogsTorsten Landsiedel
 
WordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenWordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenTorsten Landsiedel
 

Mehr von Torsten Landsiedel (17)

Das Health Check Plugin in der Praxis
Das Health Check Plugin in der PraxisDas Health Check Plugin in der Praxis
Das Health Check Plugin in der Praxis
 
UX-Probleme mit dem neuen Block-Editor (Gutenberg)
UX-Probleme mit dem neuen Block-Editor (Gutenberg)UX-Probleme mit dem neuen Block-Editor (Gutenberg)
UX-Probleme mit dem neuen Block-Editor (Gutenberg)
 
Oh, no! DSGVO.
Oh, no! DSGVO.Oh, no! DSGVO.
Oh, no! DSGVO.
 
WordPress kaputt machen
WordPress kaputt machenWordPress kaputt machen
WordPress kaputt machen
 
Werde Übersetzer! Werde Translation Editor!
Werde Übersetzer!  Werde Translation Editor!Werde Übersetzer!  Werde Translation Editor!
Werde Übersetzer! Werde Translation Editor!
 
Die schmutzige Seite von WordPress
Die schmutzige Seite von WordPressDie schmutzige Seite von WordPress
Die schmutzige Seite von WordPress
 
The Child Theme Dilemma (EN) - Milano Edition
The Child Theme Dilemma (EN) - Milano EditionThe Child Theme Dilemma (EN) - Milano Edition
The Child Theme Dilemma (EN) - Milano Edition
 
Umgang mit Frustration im Open-Source-Projekt WordPress
Umgang mit Frustration im Open-Source-Projekt WordPressUmgang mit Frustration im Open-Source-Projekt WordPress
Umgang mit Frustration im Open-Source-Projekt WordPress
 
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden binWie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
Wie ich durch Support und Übersetzung ein (besserer) Entwickler geworden bin
 
Social Media Menüs in WordPress
Social Media Menüs in WordPressSocial Media Menüs in WordPress
Social Media Menüs in WordPress
 
Mitmachen bei WordPress
Mitmachen bei WordPressMitmachen bei WordPress
Mitmachen bei WordPress
 
MetaMeetup
MetaMeetupMetaMeetup
MetaMeetup
 
HTML/CSS-Validierung in Zeiten von HTML5
HTML/CSS-Validierung in Zeiten von HTML5HTML/CSS-Validierung in Zeiten von HTML5
HTML/CSS-Validierung in Zeiten von HTML5
 
Shortcodes erstellen mit WordPress
Shortcodes erstellen mit WordPressShortcodes erstellen mit WordPress
Shortcodes erstellen mit WordPress
 
WordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in BerlinWordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in Berlin
 
Podcasting mit WordPress.com-Blogs
Podcasting mit WordPress.com-BlogsPodcasting mit WordPress.com-Blogs
Podcasting mit WordPress.com-Blogs
 
WordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenWordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisieren
 

Das Child-Theme-Dilemma