So for the last six months or so, since my last post here, I’ve been developing many different ways to build themes. I’ve extracted the abstractions and made them even more abstract, then refactored them and created APIs for about anything a developer would want to do. It’s taught be a ton about WordPress theming, and php in general.
In the process, I’ve learned just how good the WordPress API is, and is becoming. Many of the things I was building my own systems for are taken care of with core functions. I’ve also read a bunch of posts, listened to days of podcasts, and watch videos presentations about theming until I my dreams start with if ( have_posts() ) :. Though the temptation to reinvent the wheel very tempting as a developer, I’ve decided it’s much better to follow best practices and standards than create a frankenwork that requires a developer to learn how to use it specifically.
Sacrificing DRY and New API’s for Simplicity
As cool and flexible as my little switch loops ( that’s just what I call a switch within a foreach loop, which is a great tool for building an api ) are, I don’t want to force developers to grok them. It’s really easy to lose sight of just how abstract and confusing your code is to someone who didn’t write it, and uses different data structures.
So, now that I’ve created frankenthemes ( my personal blog at http://jeffsebring.com is still using one ), I’m going back to the basics, and building themes in a fairly standard way. I think in the end, it will be better for users, and anyone who may need to work on them in the future.
That said, I’m using a killer new WordPress theme development tool call Forge, a Ruby gem built by The Theme Foundry, to enable you to build WordPress themes using Sass and Coffescript. I’ve used it for a couple of client site projects, and am also working on my first premium theme, which will be a responsive, minimal personal blog theme.
I’m still building sites with Thesis when requested, but I’ve found that once you get theming down, it’s much better to just build a one-of theme from scratch for most sites.
I’ll post here again when my theme is ready, and try to outline some of the decisions made during it’s development.