When building a WordPress theme, determining what method to use is the first place to start. Developers will usually use one of three methods: Install a prebuilt WordPress theme and customize it to suit your needs, use a WordPress framework (like Genesis or Thematic) to build a child theme, or build a theme starting from a blank theme, like HTML5 Boilerplate. Which method you choose really depends on your experience level and what you’re trying to accomplish.
When I first started building themes, I used frameworks to take advantage of all the features of WordPress (widgetized sidebars, post featured image, custom menus, etc.) without having to write backend PHP code, because those features were already part of the framework. Coding is done mostly through filters, hooks and CSS.
As I became more experienced, I found I prefered to build WordPress sites starting with a “Blank” theme, because you have granular control of what you can do, a much smaller footprint, and it’s actually easier and faster to develop once you get use to use it.
Prebuilt WordPress Themes
A prebuilt (AKA stand-alone, pre-made, or base/starter theme) WordPress theme is one that is already designed and developed, and just needs to be installed on WordPress before it’s ready to use. The advantage of using this method is it requires the least amount of time or experience. You can find a theme that is close to what you’re looking for, do some minor customization after installing the theme, and you have a complete website. Prebuilt themes usually have numerous theme options that let you change the theme to give it a completely unique look, which include different background colors, fonts, and adding a logo.
This method isn’t actually building a theme. Instead it uses a prebuilt theme that can be customize to be unique. But some developers will start with a prebuilt theme and use it as a framework to build their theme. There’re dozens of great themes that are good for this, including Twenty Twelve and Responsive, to name a couple I’ve used as a framework. The issue with using a premade theme as a framework is that it’s very difficult to customize beyond what it was designed to do through its options panels, and writing CSS code often requires overriding the parent’s theme styles using long complicated CSS specificity rules.
A framework is a sort of “drop-in” code library that’s used to facilitate theme development by extending the functionality of WordPress. To build a theme from a framework, you have to include the framework as a parent theme and then build a child theme that inherits the parent’s resources. There’s a learning curve for using frameworks because each framework has it’s own documentation for building themes through hooks, filters, and CSS rules. Once you learn a specific framework, building themes can be much easier than using a blank theme because it requires a lot less coding, which is great for people who want to build a quick theme and inherit page layouts, CSS styles, and widgets areas from the parent theme. Because frameworks come with all these built-in features, they are usually bloated with lots of extra code and files, making it difficult to integrate your own custom code or troubleshoot if you have a problem.
A blank theme is a stand-alone theme or “starter-kit” designed to be used as a starting point to building a custom theme. Using a blank theme means you have to write your own WordPress backend code to handle features like theme options panel or widgetized sidebars in your themes. But you can reuse your blank theme in all your projects to help avoid writing repetitive code.
The upside of using blank themes is that you have complete control of layout, design and functionality without having to strip out unnecessary code, or having to read documentation on how to use a specific framework through using hooks or parent theme CSS.
In my opinion, prebuilt themes are appropriate for low budget projects. You can find a theme that looks close to what your client wants, making only minor customizations. Using frameworks is okay if you don’t mind all the extra bloatware and don’t have a lot of custom code of your own to integrate. But if you want complete control of your theme’s layouts and features, and especially if you’re building your themes from layered PSD files, and like writing your own HTML markup as I do, then starting from a blank theme is by far the best choice.