I’ve spent around 4 hours of the last 24 in my life reevaluating my WordPress development workflow.
Previously, I had been developing all of my WordPress themes using the Underscores starter theme. I do not have any problems with it and I still believe it’s the greatest starter theme available for WordPress to date.
However I had been hearing an awful lot about the Genesis theme framework, and I was starting to wonder if I was missing something by not using it. Could I be developing my websites more quickly and efficiently using a theme framework like Genesis? Would I have more recyclable code that I can apply to new projects as they come up? Are there other benefits that I may not even know about?
So I bought a copy of Genesis ($60). The first thing I tried to do was to create a simple child theme using Genesis. I had never worked with a theme framework before, and it gave me a rude awakening into the world of how they’re constructed. With Genesis (as in other theme frameworks), you become reliant on framework-specific hooks in order to add/remove content blocks or customize your child theme. Rather than edit theme files directly, I am required to make modifications to my child theme’s functions.php to either add in or strip out the functionality that I desire. In many instances I found that in order to make a website look the way I wanted, I needed to remove some of the framework’s default functionality before I could even begin to add in the customizations of my own.
This isn’t a bad way to develop themes at all, and I know that many prefer it. But to me it added another layer of abstraction and complication between the code I’m writing and WordPress itself. Instead of just my own custom theme and the WordPress core files, there’s suddenly a middle-man of the Genesis framework which I need to pass through in order get stuff done. This wouldn’t be a problem if Genesis added some significant benefits to the themes that I create, but quite frankly after giving it a couple of hours of time I didn’t find anything truly worth noting.
The websites that I create are almost always based off of custom designs, and coding those designs into a WordPress theme makes more sense to me as a starter theme. I don’t see a true need or benefit for me to implement a framework like Genesis for the type of websites that I develop. Though I could become efficient at building Genesis-based child themes, I don’t think my development process would be inherently better (or any faster), and the end product that my clients use would not be improved in any perceivable way. And as for Genesis’s built in SEO capabilities, I personally prefer to use the most-excellent WordPress SEO plugin by Yoast.
The one item about Genesis that does appeal to me is the fact that it allows me to constantly keep the codebase of my theme updated. Because the Genesis framework will always be implemented using a child theme, I will be able to apply updates to my parent theme framework immediately as they become available (and Genesis is good at staying up to date with WordPress best-practices).
With Underscores, I do not have a parent theme. When I download a new instance of Underscores to use as a starter theme, I’m getting a snapshot of where Underscores development is at at that very moment. Once I start making my own customizations, it becomes exceptionally difficult to implement any changes that are made to the Underscores theme itself. This is the one drawback with Underscores (or any starter theme) that I have thought long and hard about. Fortunately, I found this blog post from the creators of Underscores which basically says not to worry about it. I trust their word on this because the developers of Underscores work for Automattic (the parent company of WordPress) and heavily contribute to the core files and general trajectory of WordPress itself.
Sure, there may be a time several years down the road in which I’ll need to update some of my old themes based off of Underscores to implement new WordPress features as they become available since my themes do not have an updatable codebase. But I do not think doing so will present a major challenge for me personally, and the benefit of having complete control over my code in the “here and now” trumps the “what if” that may not even happen down the road.
I did some additional research and found an awesome WP Watercooler video debating the merits between using a theme framework and a starter theme, and also a presentation on Underscores from WordCamp LA 2013 by Steve Zehngut. While there is obviously much room for debate, these discussions and presentations highlight the benefits of using Underscores that is keeping me sold on it for the time being.
One cool tip I picked up was to create my own custom plugin which includes all of the code that is normally added to the functions.php file of my new copy of Underscores. Not only will it make it easier to switch themes or redevelop the website in the future, but it will also speed up the initial development time (once I actually get the plugin created, that is!).
Perhaps I need to give Genesis some more time to grow on me, but for the time being I’m going to stick with Underscores.
If you have any questions or you feel differently, please let me know in the comments below.