There are many acceptable ways to build a custom WordPress theme from a custom design. I will go over each in detail. The strategy the developer will pick is ultimately based on the comfort level and the project requirements. The most important consideration is making sure WordPress works for the user as intended. WordPress is designed so that the non-technical user is able to login and easily make changes. Here are a few key points for consideration.
What Needs to Be Edited:
During the design phase it is important to understand how the content will be accessed and edited after the site has been completed. I have seen too many cases where the developer builds a site based on his/her understanding and not what the client expects as far as purpose goes. This are like widget areas, custom post types need to be determined up from. In most cases the good motto will be “If it looks like text, it should be editable from the back end.” It is only way better to use HTML text in place of images when possible. It is not only for the reason that it is easier to change text than to edit an image, but search engines will read the text on a site, but will not see any content value from the images.
Understanding the Client Preference:
If the work is being done for a web development company, there is a good chance that they will have internal theme building methodologies they use. It is important to determine this prior to the start of development. In cases where the web development client does not have a strategy, it is important for the developer to work with the company to build a strategy that will be reused in later projects. I have clients that send over the scope including how they want the theme developed, as well as those that leave it to my best judgment. In easier case, it is best to clearly document the strategy.
Complete Custom VS. Start with a Builder Theme:
I think that this is dependent on the comfort level of the developer. I have done full custom jobs as a complete custom job, and also used a start theme to get started. A full custom build is taking the HTML code and using only the required WordPress files for the build. These take only the inherent WordPress files that are used in the theme as needed. The advantage of the pure custom theme developed using the WordPress standards is that another developer should be able to jump right in and make edits seamlessly.
Using a Premium Theme:
Great caution should be taken when going this route. A premium theme will be loaded with both options, features and limitations. The options and features are great; just as long as the limitations are understood. With the number of features in each one of these, there are certain limitations that come with it. I use the term “inherent functionality” a lot and this applies to these types of themes in particular. Simple changes such as with the design/layout will considerablybe more difficult with a premium theme. It is important that these limitations are discussed prior to moving forward in development.
Building on a WordPress Framework:
WordPress frameworks like Twitter Bootstrap and Genesis offer pre-built functionality that can enhance the site and reduce development costs. This is specifically true when it comes to responsive websites. The framework is built for flexibility and code reuse. The decision to go with a WordPress framework will depend on the knowledge level of the developer and the requirements of the project.
Don’t Hard Code!
This is probably the most important rule when it comes to WordPress theme development. Do require the user to learn WordPress development to edit the site. This is not only important for ease of use, but hard coding elements within a WordPress site will cause catastrophe when it comes to updating the version of WordPress, as well as the plugin. If possible, make sure that content goes where content is expected. A user might need to edit a header PHP file to change the home page content. The other important consideration is making sure that the menu system works as intended within WordPress. I have seen many cases where the client is not able to go into the menu editor and make changes.