One of the most amazing things about using WordPress is the access you get to the greater WordPress community. There’s developers and designers of all backgrounds and perspectives contributing to the eco-system, from core development to theme design to plugin creation and more.
As I’ve told many a client, if you’re looking for a particular feature or function for your site, chances are so is someone else — and it’s been developed for you to use.
But while most site owners tend not to make customizations to the WordPress plugins that the community has developed, they’re much more likely to want to customize the look and feel of a theme they’ve downloaded from the Themes Directory or from a theme vendor.
In the past, that wasn’t too big of a deal; you’d get a theme and, assuming you knew what you were doing, you’d edit the stylesheets, change around the template files some, add in some custom functions, and more.
But when WordPress began allowing theme designers to update their themes (with the updates pushed through the WordPress update system), it presented a problem for sites who had customized their themes: these updates would undo all of the customizations made to the themes.
So in order to prevent this, it became more important to use child themes, or according to the official WordPress definition, “a theme that inherits the functionality of another theme, called the parent theme, and allows you to modify, or add to, the functionality of that parent theme.”
Essentially, when you create a child theme, you’re creating a light-weight add-on to an existing theme that allows you to make the customizations you want without having to edit the actual theme files.
A child theme exists of, at a minimum, a new stylesheet file, which calls in the parent theme and then adds in new styles (fonts, colors, spacing, etc.) to create a new look and feel for the site. You can copy in/create new versions of template files in your child theme folder (which will overwrite the parent theme version) and you can add new functions to your functions.php file, which will be added in addition to your parent theme’s functions.
We create child themes any time we’re customizing an off-the-shelf theme, but there’s a decent argument to be made that it almost doesn’t matter (and you don’t necessarily need to do it). Here’s why.
This tends to be why we tend not to work with themes that have updates; ideally, the theme shouldn’t need to be updated. Sure, you’ll want to make design customizations and changes to it overtime, but the basic functionality shouldn’t adjusted without taking into consideration the site owner’s needs and layout.
Most of the time theme updates are due to non-design related code being updated for security reasons, but that means that the theme itself is trying to do too much. Design should focus on design, and functionality should come from plugins or WordPress itself.
We create child themes for the cleanliness of the code; knowing what’s bundled in with the parent theme and what we’ve adjusted in the child theme is important for us.
All too often, however, the themes we work with aren’t designed to be used as parent themes (using calls like “get_stylesheet_directory” instead of “get_template_directory” — meaning to look in the folder the stylesheet is in, rather than in the theme folder) and we’ll have to hack them to get the desired result we want.
It’s not an end-of-the-world problem, by any means, but it further complicates what is meant to be a time-saving process.
Child themes matter, but they aren’t being used to their full functionality … yet.
I’ve yet to hear a convincing reason why themes need to be updated, which lessens the main purpose of a child theme. (If you’re saying security is the issue, I’d say that insecure code shouldn’t exist in your theme — use plugins for that kind of functionality.) And until every theme designer and developer realizes that their theme may be used as a parent theme and codes appropriately, we’ll still need to hack the parent theme to make sure it’s totally usable.
As with all things online, it’s an ongoing process and development is never-ending. I’m hoping it becomes easier to use child themes as these issues are addressed.
PS. I purposely didn’t discuss frameworks, a relatively new approach to parent and child themes, in this article, but there’s plenty of good information in this post from Post Status.