Themes: child themes, custom themes, starter themes, theme frameworks.
You’re not alone if you’re thinking, “What the h – e – double freaking toothpicks is the difference?”
Every WordPress site MUST have a theme.
Without a theme, nothing can be shown on the front of a site. In fact, without a theme, a WordPress site cannot function at all. Users will simply see a white, blank screen. You won’t even see any errors, just a fat load a’ nothing.
The word “theme” refers to the design and all of the code used for showing the content of your site. It is a pretty generic term that has nothing whatsoever to do with the actual content on your site.
When you get a fully functional theme from a repository all you need to do is install it, activate it, and voila. You’re ready to go. You can start adding content to the site, which the front end displays without doing any additional work to get it running. It will look and work exactly the way the box said it would.
A child theme is ideal when you have a theme that does almost everything you need it to do, but you want to make minor changes to it. A child theme inherits all of the code, design, and functionality of its parent theme. A child theme allows you to make MINOR code and design changes while still enabling you to update the parent theme. This ensures that you get to keep the minor changes that you’ve enacted and that you’re also able to update the code should the author need to make changes due to bugs, security issues or changes in the way WordPress itself works.
While it may not always be necessary to do so, it’s usually a good idea to set up a child theme for any theme (other than a starter theme, see below) acquired from a repository, just in case modifications are ever needed. However, if you know for a fact that you’ll never be mucking about in the code of the theme then a child theme is likely unnecessary.
A child theme is not needed when you have a custom theme built for your site.
A child theme must be updated by a developer to make changes to any of the code or functionality added by the child theme.
A custom theme is exactly what you’d think it would be: built specifically for one site and one site only (usually). A custom theme contains only the code and functionality that is required for that one site to work.
Custom themes are generally not available in repositories, meaning the developer handcrafts the design. Custom themes do not get updated except when a developer makes modification directly to the files and code of the theme.
It is a common misconception that each custom theme is built entirely from scratch. Most developers begin their work from a common starting point each time – which brings us to our next type of WordPress theme.
A starter theme is a starting point for building a custom theme. These themes act as a toolbox with the basic code and pieces that a developer always uses when assembling a new custom theme.
Developers can either build their own starter theme or acquire them from a repository. It’s not difficult to find these options – they’re usually advertised as such.
These themes are not meant to be updated from the repository once completed. In fact, most starter themes explicitly state to rename the theme so that it cannot be updated. WordPress assumes that the developer who uses the starter theme will be modifying it and adding to it to such an extent that updates will not be possible. In most cases newer versions of the starter theme are not backward compatible, meaning that if you updated them, the odds are good that you’ll break your site by introducing the code from the new version.
Any theme can become the starting point for a new custom theme and used as a starter theme – including all of the other theme types mentioned above. Some developers use the default theme installed by WordPress as their starting point.
Theme frameworks come in all shapes and sizes.
Developers build theme frameworks to allow others with little or no coding ability to construct a semi-custom website.
There is a common misconception that a theme framework is something other than what it truly is: A theme framework is nothing more than a theme that requires a lot of configuration, and possible additional files, code, and a child theme to get started.
Theme frameworks usually require the use of a child theme so it can be updated. Sometimes these child themes also requires child themes of their own (grandchild themes if you will) so that the child theme can also be updated.
Many themes that are in repositories fall into this category. Remember when I said, “It will look and work exactly the way the box said it would. Sometimes.”
You must be extremely careful when selecting a theme or you may end up doing a lot more work than expected.
Frameworks usually introduce a lot of custom code that extends WordPress. The functionality introduced by these frameworks cannot be used in other themes that do not also use the same framework. Moving to another theme that does not use the same framework can mean that much of the content and functionality of a site is lost in transition and may need rebuilding from scratch.
Every WordPress site has a theme.
A theme is a theme is a theme is a theme. When building your next site, remember the fundamental differences, terms, and updating policies for the WordPress themes you use.