Más contenido relacionado


The Child Theme Dilemma (EN)

  1. The Child Theme Dilemma WordCamp Cologne 2015 Torsten Landsiedel
  2. Hello! Torsten Landsiedel WordPress- Freelancer Moderator German Supportforum Editor Team Translation Contributor and Editor Co-Organisator WP Meetup Hamburg Co-Organisator WordCamp Hamburg @zodiac1978
  3. Child Theme Usage Who has used Child Themes?
  4. Child Theme Usage Why?
  5. Child Theme Problems Security Extensibility Performance
  6. Security Problems Parent Theme search.php (with vulnerability) Child Theme search.php (with vulnerability) Parent Theme search.php (without vulnerability) Child Theme search.php (with vulnerability) update overwrites no update!overwrites
  7. Child Themes aren’t safe? Why nobody told us?
  8. Extensibility Pluggable Functions: if ( ! function_exists( 'theme_special_nav' ) ) { function theme_special_nav() { // Do something. } } Attention: Now you have to maintain the code!
  9. Missing extensibilities Framework Theme + Premium Child Theme? Theme + Child Theme? Where to put the customizations? Thre are no Grandchild Themes :(
  10. Missing extensibilities Why shouldn’t there be Grandchild Themes?
  11. Missing extensibilities This idea of releasing advanced child themes just creates the same problem child themes were meant to solve: upgradability. – Justin Tadlock and-grandchild-themes
  12. Update of Parent Theme Without any problems? It depends … filter/actions removed? CSS classes changed? Markup changed? Paths changed?
  13. Performance Problems Many Child Themes are using @import @import url(../parent-theme/style.css); But @import stops parallel loading in all browsers.
  14. Solution: De-register styles und re-register/re-enqeue parent and child styles 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 problems
  15. Even simpler: Enqueue parent styles. Done! Just works if get_stylesheet is used (and just this) in the parent theme. // 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 problems
  16. New problem: Many themes are not build that way. Hardcoded stylesheets in the header.php for example: <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" /> Performance problems
  17. Performance problems Or the theme is not compatible with using a child theme. Or you have to de-register everything to preserve the correct order. 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' );
  18. Performance Problems Can be very complicated for beginners ...
  19. Performance Problems Justin Tadlocks brilliant solution for the parent 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' );
  20. Hey Torsten! Grab some water. Don’t speak too fast. :)
  21. Child Theme Problems Security Extensibilities Performance
  22. Idea 1: Child Theme Lite “Child themes from theme developers should be nothing more than a stylesheet and a few functions.” – Justin Tadlock
  23. Idea 1: Child Theme Lite Child Theme just contains functions.php and style.css. All changes should just be made with hooks and filters. This would be made within a plugin. Child Theme remains update-ability.
  24. Idea 1: Child Theme Lite Problem: How many themes do something like that?
  25. Idea 2: Child Theme Check Every template file in the theme is ghetting a version number in the file header. @version 1.0.0 Check of the version number via plugin (or even better via WordPress core). Differences between files can be shown via wp_text_diff().
  26. Idea 2: Child Theme Check DEMO!
  27. Child Theme Check Voilá!
  28. Child Theme Check
  29. Child Theme Check - This is a Twitter opportunity! -
  30. Child Theme Problems Security ✓ Extensibilities (✓) Performance ✓
  31. ● Is Tools the right choice for the menu? Or should it be Appearance? ● Just open an issue on Github: Conribute? Great!
  32. Thank you for your feedback!
  33. Discussion! Questions? Contradiction? Alternative solutions? Theme Shop/Theme Developer: Interested? Let’s speak about it! @zodiac1978
  34. Thank you for your time! Safe travels! :)