The last few months have been my busiest since I started freelancing full time in August 2008 and I’ve also had to tackle some of my most complex WordPress projects. This means I had to re-evaluate parts of my WordPress toolset to be able to satisfy some of my increasingly demanding clients’ requirements and was forced to make some important changes to it.
I also learned a lot about WordPress as a development platform in the last two years and, after working with ColdFusion for a long time, I’m starting to get far more comfortable with PHP now. This enabled me to appreciate how powerful, elegant and flexible the WordPress platform really is and how much easier it makes things when you use the tools and APIs it provides correctly. This new understanding forced me to look at some of the tools I was using with new eyes and rethink some of the early decisions I made when I first started to work with WordPress. This includes rethinking Headway, the theme framework I’d been using as I was starting to have issues with it and the theme is the most important component of a WordPress site besides WordPress itself.
A New Theme Framework and Some History
When I first started using WordPress, I searched for a flexible theme that would enable me to integrate any design into a site quickly. I knew right away that pre designed themes would not cut it for my needs so I immediately started to look into theme frameworks. I finally chose Headway and I used it exclusively on all my client sites for nearly two years.
The other reason I decided to use a theme framework like Headway is that I thought that it would be time consuming to have to build a theme from scratch for every project. Eventhough I had a working knowledge of PHP, I wanted to get rolling quickly and avoid to have to code a theme by hand or write any PHP code at all if I could avoid it. Headway served me very well in that regard during these two years and I postponed learning the details of theme development to a later time. At that point it was refreshing for me to be able to concentrate on design and the user experience and not programming the same basic functionality project after project. After all, that’s why I’d chosen to use a CMS like WordPress in the first place right?
But, as time went by, my knowledge of both WordPress and PHP grew and alongside that, the complexity of what my clients expected me to build with WordPress. I was also discovering the APIs and built-in functions that WordPress offers to theme and plugin developers in order to standardize and ease WordPress sites development.
In January of this year, I started to use iThemes Builder because I was hitting into Headway’s limitations on a big magazine type Web site project where I needed to use WordPress Custom Post Types. I had found a fantastic plugin to create the Custom Post Types but I was unable to get them to display correctly using Headway even though I’d built that site layout twice, once in Headway 2.0 and 80% of it again in Headway 3.0 hoping to get CPTs to work there. But I was unable to make it work. I also had another project coming where I would need to rely even more heavily on CPTs. So when I finally realized that I was unable to get either Headway 2.0 or the new 3.0 version to display CPTs and meta-boxes fields in my content (let alone position them exactly where I needed) I decided to find another theme framework and tried iThemes Builder. It delivered beyond my expectations in spite of my having to learn to use it as I went along rebuilding that site’s layout for the third time with a brand new theme and an even closer deadline looming…
Here are a few of the reasons why I think Builder is a better theme framework for me at this time.
On WordPress Theme Development Standards and Best Practices
In the WordPress world, nowhere is the adherence to standards and best practices more important than in theme development in my opinion. There are several reasons for that but, for me it came down to flexibility and finding the right information within all the WordPress community ressources to get the results I needed to get. I’ve also been a strong Web standards advocate since long before it became popular to be so and, while working on that magazine site, I was quickly realizing that Headway was not built in the standard WordPress way. Most of the info I was finding on displaying Custom Post Types was based on modifying or adding to WordPress loop code in standard template files and that did not apply to Headway as it does not expose standard WordPress template files or WordPress loop code for modification. You need to use hooks and filters or a plugin like LoopBuddy to modify content output and although I do have LoopBuddy and can code some hooks, I was getting nowhere. This doesn’t mean that it’s not possible to do what I wanted with Headway but I was unable to make it work. I was starting to second guess my decision of using Headway at all on this project but I knew nothing else at the time.
Even Headway 3.0 although it now supports child themes does so in the same non-standard way as 2.0 did and the Headway 3.x parent theme does not have any of the standard WordPress templates files either and, if it does, they contain only a single call to the “headway();” function or class because it needs to support the Headway Visual Editor which is the primary selling point of Headway… and something that was becoming a major pain in the ass for me as I was struggling with the 3.0 version.
The thing is, I may not be Headway’s “ideal” user. I’ve been working on the Web for over 16 years now and I’m not afraid of code, quite the opposite. I can write CSS in my sleep, write decent PHP code and will use any method to get what I want done as efficiently and quickly as possible. The Visual Editor in Headway 3.0 was getting in my way at that point, not helping me and I craved for the ability to change the content at a much more granular level than the Headway Content Block or Headway’s then poorly documented filters and hooks allowed me to.
For many people, a visual framework like Headway is fine and probably all they’ll ever need but for me it became a real problem as I was hitting a dead end on the Custom Post Types display issue. As I wrote above, I probably would have gotten there eventually using hooks or the LoopBuddy plugin (or both) but I was learning how to use CPTs as I went along on a huge and very real project and on a tight deadline. Nothing I tried was working and I just didn’t have the time to dig for the specific info I needed while I found plenty of info that would help me if only I had access to WordPress loop code directly….
iThemes Builder Comes and Saves the Day
During the two years+ I’ve been working with WordPress, iThemes Builder is a theme framework I’d heard more and more great things about although it did not figure in my initial choice (which was between Thesis and Headway). I had never tried Builder but its reputation as a developer friendly theme framework that is just as flexible as Headway was growing (it is much more flexible than Headway IMO but that’s for another post). I was starting to know what kind of info or terms I needed to Google for to find how to display CPTs and I was now very aware of the method of building themes with standard template files. So, when I saw that Builder had them and exposed real loop code, I bought a basic Builder developer license and installed it along with the basic Default child theme on a local copy of the magazine site I was struggling with. The Default Builder child theme recreates the same kind of basic out of the box look that Headway had and that activating the parent Builder theme would give you. This felt very natural to me as I’d never used a pre designed child theme anyway.
Before I started recreating the site’s layout for a third time in Builder I quickly started testing the instructions for using custom post types that came with the Easy Content Types plugin I was using and other tutorials I’d found online. I deactivated the plugin and removed all traces of it in my local install’s database then I reactivated it to make sure it would do all the initialization tasks it was supposed to do but with a more standard built theme. The instructions mentioned that, in a standard theme/child theme set up, a new appropriately named template file would be created in the child theme’s directory for the single custom post display as well as another for the post type’s archive display. The single file was actually created by the plugin when I recreated my post type which had never happened with Headway and it contained the same code as the parent theme’s single.php file. On the other hand, the archive.php based file was not created. But this was progress at last!
I was now more confident and I created the archive-my_custom_post_type.php file myself by copying archive.php from the parent theme to the child theme and renaming it myself and it worked! I added the code that came in the plugin’s instructions to display meta boxes variables or fields within the loop and they displayed in the posts at last! In less than 2 hours I’d made more progress on that site than in the previous 2 weeks. After that I never looked back and Builder has become my go to theme framework since then.
Why I now Use iThemes Builder Exclusively
It turns out that, on that magazine project, the ability to copy template files from the Builder parent theme and tweaking the code directly became invaluable if not essential (regardless of CPTs display issues) as I started to move stuff around and manipulate the WordPress main query directly to give the client exactly what he wanted without using plugins or hooks or filters. This felt right to me. I’ve “lived” in HomeSite’s and then Dreamweaver’s code editors for years so, in a way, this a far more efficient way of working than a Visual Editor for me now. As I said above, I can write CSS code in my sleep and I’m becoming quite procifient with PHP and WordPress coding practices. This coupled with Builder’s very well made Layout Editor and Views makes for a much more flexible theme framework than Headway ever was for me. I sometimes use the LoopBuddy plugin (another iThemes product) to manipulate a view’s query in a more powerful but similar way that Headway content Blocks/Leafs enabled me and also without coding.
But what was the real revelation for me as I used Builder more and more is that, when I Google for a solution to specific problem these days, the search results are most often directly applicable in Builder and make perfect sense to me. The wider WordPress community and all the resources it has created over the years are orders of magnitude larger than the Headway community as great as it is. That is another bonus of working within a platform’s standards and best practices as opposed to proprietary methods. You have access to a larger repository of resources than with smaller proprietary products and, in my case, it has made my life as a WordPress designer and developer a lot easier as I learn to work with iThemes Builder.
Despite appearances, this post is not a diss at Headway. I still think it is a very good and very flexible theme for many people. Not everyone wants or needs to get at the loop code but it’s just no longer the ideal theme framework for me and I would no longer recommend it to people with similar backgrounds to mine.
I’ll write a proper review of Headway 3.0 down the line when it reaches feature parity with Headway 2.0 and provides an upgrade path from the previous version (which it still doesn’t do almost 6 months after 3.0′s release). I have done a complete Web site project with it too in January and February so I do have experience working with it. I will then explain the reason why I will also no longer recommend it even to non-coders and less experienced Web designers. But that is for another time. For now, I welcome your comments or questions on this post and Builder, theme frameworks or standards and best practices.