Das Child-Theme-Dilemma

3.498 Aufrufe

Veröffentlicht am

Talk über die Probleme von Child-Themes in WordPress (inkl. Lösung per Plugin) vom WordCamp Cologne 2015

Veröffentlicht in: Internet
0 Kommentare
5 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.498
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
514
Aktionen
Geteilt
0
Downloads
13
Kommentare
0
Gefällt mir
5
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Das Child-Theme-Dilemma

  1. 1. Das Child-Theme- Dilemma WordCamp Cologne 2015 Torsten Landsiedel
  2. 2. 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
  3. 3. Child-Themes-Nutzung Wer hat schon mal Child-Themes genutzt?
  4. 4. Child-Themes-Nutzung Warum?
  5. 5. Child-Theme-Probleme Sicherheit Erweiterungen Geschwindigkeit
  6. 6. 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
  7. 7. 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!
  8. 8. Fehlende Erweiterungsmöglichkeiten Framework-Theme + Kauf-Child-Theme? WordPress.org-Theme + Child-Theme? Wohin mit den eigenen Anpassungen? Es gibt keine Grandchild-Themes :(
  9. 9. Fehlende Erweiterungsmöglichkeiten Warum sollte es keine Grandchild-Themes geben?
  10. 10. 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
  11. 11. 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/
  12. 12. 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
  13. 13. 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
  14. 14. 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 …)
  15. 15. 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' );
  16. 16. Performance-Probleme Komplizierter für Anfänger: alles raus und in richtiger Reihenfolge wieder rein ...
  17. 17. 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
  18. 18. Hey Torsten! Trink’ mal einen Schluck Wasser. Sprich nicht zu schnell. Und frag’ mal, ob alle mitkommen. :)
  19. 19. Child-Theme-Probleme Sicherheit Erweiterungen Geschwindigkeit ✓
  20. 20. 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
  21. 21. 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.
  22. 22. Idee 1: Child Theme Lite Problem: Wieviele Themes bieten so etwas an?
  23. 23. 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().
  24. 24. Idee 2: Child Theme Template Check DEMO!
  25. 25. Child Theme Template Check Voilá!
  26. 26. Child Theme Template Check
  27. 27. Child Theme Template Check https://github.com/Zodiac1978/tl-template-checker - This is a Twitter opportunity! -
  28. 28. Child-Theme-Probleme Sicherheit ✓ Erweiterungen (✓) Geschwindigkeit ✓
  29. 29. ● 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!
  30. 30. Danke für euer Feedback!
  31. 31. 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
  32. 32. Danke für eure Zeit! Kommt gut nach Hause! :)

×