This is a question I see a lot from new theme developers. Should they start with a framework? A parent theme? Use Underscores? Start from scratch? What’s the deal?
Underscores is a starting point.
- It’s not a framework.
- It’s not a parent theme.
It’s a half baked theme to help you get started.
One way you’re meant to use it is like this:
- Download the theme.
- Change the name.
- If you install it at this point, it would be a bare bones, boring ass theme.
- You dig into the template files and move things around how you want.
- You add your own CSS and images to style the theme.
It’s like writing an essay, but instead of starting with a blank piece of paper, someone hands you a paper with a few sentences of each paragraph already written. They’ve got the thesis statement, the start of each supporting paragraph, and the conclusion. But you need to elaborate a little on each part in order to make it complete.
Alternatively, you can build your own theme from scratch but use Underscores as a guide. It serves as an example of good coding practices and theme structure. So you code your own theme, but do it with the same style and organization as Underscores.
Genesis is a parent theme
Genesis in itself is an entire, completed theme. You install it into WordPress like a theme (as it is). Then it’s your job to make the theme look custom by creating a child theme.
A child theme inherits everything from the parent theme, including styles and functionality. But child themes can override things from the parent.
Typical usage might look like this:
- Download and install Genesis.
- Create a child theme that marks “Genesis” as the parent.
- Add your own style.css file and put all your custom CSS in there to change the styling/design of the theme.
- You can change how the theme functions by overriding the parent theme’s template files, or by putting code snippets in the functions.php file (the latter being more common with Genesis).
In the end, a Genesis child theme would typically have fewer files than an Underscores theme, because so many files are already created by the parent theme framework and you may not need to override all of them.
Underscores and Genesis are coded in different ways.
- Underscores is meant to serve as an example of custom theme development. It uses WordPress best practices and coding standards. Even if you don’t want to use Underscores exactly, you can still use it as a guide for how to create a totally custom theme.
- Genesis is entirely different. Yes, it’s coded well, but when you start creating child themes, that process is vastly different from “normal” theme development. You’re not really learning how to “create WordPress themes”; you’re learning how to “create Genesis themes”.
Use Genesis if…
- You want to use as little PHP code as possible (and you’re not interested in learning much more). I say this because with Genesis it’s possible to create a child theme that’s only a style.css file. With Underscores, you need PHP templates. So in that sense, Genesis is probably less overwhelming.
- You want to join a community full of theme developers. This kind of community is much easier to find with Genesis. There are Facebook groups, support forums, knowledgebases, and more. You’ll find more support and assistance as you’re creating your theme, whereas with something like Underscores you’re pretty much on your own.
- You want the core code base to be updated and maintained by someone else. The parent framework is always getting updates, but it’s far more rare that you’d need to update your custom child theme.
Use Underscores if…
- You want to learn WordPress theme development. The best way to get a solid, fundamental understanding of how WordPress works and how the themes are put together is by creating a theme from scratch. If you only ever use Genesis then you only know “Genesis theme development”, which is significantly different from normal theme development. Starting with building a theme from scratch gives you valuable knowledge about how WordPress works.
- You’re interested in learning more PHP. In my opinion, you’ll learn a lot more by forcing yourself to interact with more template files and doing things from scratch.
- You want more complete control over what happens on your site.
- You’re interested in submitting a theme to the WordPress repository (my understanding is that child themes are only allowed if the parent theme is also in the repo, which Genesis is not).
If your goal is to:
- Learn more PHP code
- Learn WordPress development
- Have a better understanding of how WordPress works
…then you should start with Underscores. Always.
As I said before, learning Genesis doesn’t truly teach you WordPress development or structure. Instead, you learn “Genesis development”. It’s very different from native WordPress theme development.
By starting with Underscores, you learn how to truly create a theme from scratch and get that knowledge of how WordPress themes get put together. If you start out this way and obtain that core knowledge, you will become a better developer. And if you decide to move to Genesis later, I guarantee you will be an even better Genesis developer than you otherwise would have been.
- Start with Underscores.
- Become a better developer.
- Then choose to either stick with custom theme development, or move to Genesis later.
Regardless of your final choice, you’ll become a better developer if you have that fundamental knowledge.
(But of course, if your goal was to avoid PHP and development as much as possible, then Genesis might be better. 😛 )
Learn to code a theme from scratch!
In my new course, Build Your Own Damn Website I teach how to code a WordPress theme from scratch. Although we don’t use Underscores exactly, the style taught is very similar to the practices used in Underscores.
The course is over 35 lessons of mostly video content. You learn how to set up a theme, understand the different theme files, set up a blog, add widgets, create custom templates, and even work with the Customizer.
If your goal is to learn theme development but you don’t know where to begin, register for the course and I’ll help you become a coding goddess. ♥