There are a few types of WordPress developers out there, one group use starter themes since their job, or work, requires them to constantly build custom one-off theme for clientele, work, etc. While not every developer who creates custom themes uses a starter theme, many do, and for good reason.
What is a starter theme?
A starter theme is a theme that instead of creating a child theme of, you just change the name of, and make your own theme. It is not meant to be a parent, it is meant to be the first few files of your new custom theme. If you don’t use a starter theme, you have to create the same base code every time: style.css, header.php, index.php, and footer.php – these are the core files for any theme, even the functions.php file is optional.
So think of a starter theme as your base starting point.
Why use a starter theme?
I am not going to try to argue that using starter themes are bad, I firmly believe that no matter how fast you can make yourself code, having those 3 files ready to go for a WordPress theme is going to save you HOURS over a couple sites. There are also many great starter themes out there, from the dev-favorite roots.io (sage) or Automattic’s starter theme which many love, _s (undercores).
However, I have an issue with these themes. They are too bloated. When I first picked up the roots.io project, and their DRY (do not repeat yourself) philosophy, I was very intrigued. It was a good setup, and made a lot of sense, but the learning curve was steep every time I picked it up, and felt like while it made sense, it was never “The WP way”.
— side note: I’m never been an advocate for “The WP way” always being definitive right way, but when creating a theme, template development was slowed down considerably using their DRY method
Look at all that code
If you are making a truly 1 off custom theme, it is probably going to have a unique design, and with that unique design, a unique layout. So while I wanted to pick up _s and love it like everyone else in the community, I found myself spending more time refactoring the DOM (HTML) to match my layout then had it had no files and I got to create every template myself based on 1 foundational layout (index.php).
It isn’t just the built in templates, many of these “starter themes” also have a lot of needed base functionality, so the functions file gets bloated or overrun with functions you may not even know you need.
When using bloated starter themes is good
So, there are great use cases for these bloated starter themes. The most obvious use case, is if you can make sure all your new themes match the DOM that is built into the theme already. While the layout might not be there, it is easy to add in enough styling to get it to where you want it. Personally I find this a little more tedious, especially if you are keen on a UI framework (like bootstrap, foundation, etc.) and already know the code well. If you can constantly use the same DOM or maybe you have a stylesheet ready to go that wrangles it into submission, then maybe this is a good setup for your needs.
Since these themes have a lot of the templates already, it does make it easy to get going and have a feature rich theme quickly. So I will concede that there are times that, maybe with a bit of extra up front time, a bloated starter theme can be used to save you time, and a good strategy.
When using bloated starter themes is not good
However, there are many times when that up front time or need of customization for the DOM is not so easily overlooked.
I for example, when building a new theme, like to start from scratch and so the DOM needs to be from scratch too. I find it annoying to have to edit all these template files to match the DOM that I already created in index.php (or maybe page.php). Talk about DRY techniques. I don’t mind copy-pasting from one template to another, but rather create those myself.
Another issue is that while most themes I try to account for every use case, there are sometimes ones that a client does not pay me for. For example, an archive page. While there is a CPT that serves a purpose to the site, it may not need an archive page, but WordPress creates one anyway. With a starter theme, that is styled, and DOM ready, but not necessarily correctly to match the rest of my new custom theme. So now I have files that actually are detrimental since instead of going back to index.php WordPress takes over and shows them archive.php which may look broken, or just unfinished.
I also find that most of these starter themes aren’t equipped for the other technologies I like using like gulp, npm, and other dependency managers. I don’t like how most themes include compiled scripts and styles, when I want to do that myself.
Level up – get minimal
I’ve learned in my travels, that the higher up I get as far as developers, the less starter themes are talked about. Most senior level developers I know, have their own starter theme, which look just like my personal starter theme. Basically a package.json, gulp.js, style.css (with basic WordPress classes defined), header.php, footer.php, and index.php – thats it. To start a new theme, rename the theme in style.css, modify what you want in the header.php (author, etc.) and do a npm install to get all the dependencies, and run gulp to get everything put in place.
So maybe level’ing up as a developer, who uses starter themes, means going minimal.
It is all about efficiency
I’m not saying start from scratch every time, because that is a waste, but its still a matter of time. Will it take less time to get to your end product with less code to begin with standing in your way? If so, go minimal.
Want to see my starter theme? Sure.. why not