Menu Search
Jump to the content X X

Today, too many websites are still inaccessible. In our new book Inclusive Design Patterns, we explore how to craft flexible front-end design patterns and make future-proof and accessible interfaces without extra effort. Hardcover, 312 pages. Get the book now →

Building WordPress Themes You Can Sell

When I took my first steps into the WordPress theme arena, I didn’t know much about it. I wandered blindly into the business, not knowing whether I was doing things correctly. Over time, through trial and error and making rookie mistakes, I learned some valuable lessons and gained important insights. To save you from going down the same winding path, I’ll share some of the important takeaways that I’ve learned so far, like how to gain a solid user base, what to include in your themes and, most importantly, what to leave out.


Gaining a Solid User Base Link

You could build the best WordPress theme in the world, but it won’t matter unless people know about it and use it. One of the smartest things I did when starting my theme business was to release a free theme. It took a while for it to gain traction, but things took off once it got some attention from being featured on other websites. Consumers are willing to download a free theme from the new kid on the block and try it out because hardly any financial risk is involved.

The free theme was unique and easy to use, and people liked it so much that they began requesting a premium (i.e. commercial) version, with more features (the free version had the bare essentials). To this day, the premium version is still one of my best sellers. Consumers like to download the free version to try it out, and then they typically purchase the commercial version. Value is added to the commercial version with support, updates, easier customization and a bundle of exclusive features. Releasing a free theme enabled me to gain momentum and build on a solid user base as I began creating commercial themes, and I’ll return to that strategy in the future to increase sales.

My First Mistake Link

The first mistake I made when getting started, and one that I still kick myself over, is that I didn’t implement a newsletter opt-in method for users who downloaded my themes. This would have given me a long list of consumers to whom I could market my premium themes, and it would have been extremely valuable when I launched the commercial version of my theme a year later. I’ve now gotten my act together and have a booming mailing list that I email every time I release a new theme, thus generating sales that would otherwise have been lost.

You’ve Got ’Em, Now Keep ’Em Link

Once I had a solid user base, I found that in order to keep them as returning customers, I had to add value not only to my themes but to my services. When you start a theme business, you’re not just selling themes; you’re also providing support and updates. Some of the top brands make great products and provide excellent support. Think of Apple, MediaTemple and Zappos. Say what you want about these companies, but there’s no denying that their user base is loyal because of both their products and their support and services.

One way to provide great support is simply to be timely with your responses. A customer loves nothing more than being responded to the same day. If you don’t know the answer to their question, at least let them know that you received it and are looking into it. You would think this is common practice, but you’d be amazed at how long some companies take to respond. If you can provide killer support, you’re already one step ahead of a lot of the competition.

Another way to add value is to provide educational resources that teach customers how to get the most out of your products. Some users will be more advanced than others, and they are usually the ones who purchase themes regularly. If you can provide a resource that enables those users to derive extra value from your products, then they will be more likely to stay with you and purchase more of your themes.

Streamline Your Process Link

Streamline and standardize your development process as much as possible. One way to do this is to use a theme framework2, whether your own or a third party’s. Using a framework to quickly develop a theme is important when an eager audience is waiting on you. Most importantly, when you use the same framework, updating all of your themes after they’ve been released is easier. For example, all of my themes display a notification in the administration panel when an update becomes available.

The code that enables this notification is in a file named framework-init.php. In this file is a bunch of other important blocks of code that add features, such as the theme options panel and custom post fields, as well as common functions used throughout all of my themes. When I need to update that code, I simply make the change to my framework’s file and then that file gets replaced in all of my themes. By knowing that the file is the same throughout all of my themes, I don’t have to bother going through each theme to find that block of code to update. You can see how this becomes valuable when your inventory starts to accumulate.

The Hybrid theme framework
Hybrid63 is one of the more popular theme frameworks, thanks to its extensive list of features, including translations into 20+ languages and theme hooks.

Custom vs. Third-Party Frameworks Link

From the beginning, I decided to build my own framework, mainly because I would know it back to front, making it easier to maintain and build on (being a control freak might have contributed to the decision as well). A custom framework also meant that I wouldn’t have to rely on someone else, and the framework would have exactly what I needed and nothing else.

This is, of course, just personal preference, and many people prefer to use a third-party framework. By using a third party’s, you save the time it takes to develop a solid framework. It also means that you’re not solely responsible for maintaining the framework, and you will usually have a support system to turn to if you run into development issues. A lot of impressive frameworks offer useful functionality, such as theme hooks, extensible layout options, styling for popular plugins and much more. Lastly, there is a growing market for child themes of such frameworks as Genesis4, StartBox5 and Hybrid63.

Other popular frameworks are:

What To Include In Your Theme Link

Depending on the type of theme you’re creating, the expectations of consumers will vary. But you should consider certain features and functionality for the majority of your themes. You needn’t implement all of these, but at least consider whether they would add value to your theme.

Internationalize the Theme for Other Languages Link

Internationalizing your theme enables users to translate the text displayed by your theme, and implementing it is fairly straightforward. This one is a must-have. I was amazed at how many non-English-speaking users downloaded my themes. Looking back, I should have internationalized my themes from the beginning, knowing that millions of people all over the world use WordPress. You would be silly not to internationalize your theme. Look at the “Translating WordPress3915” section of the Codex and this helpful tutorial16 by AppThemes for more information.

Support WordPress’ Coding Standards and Practices Link

Develop your themes in a way that supports WordPress’ latest coding standards and practices17. In doing so, you ensure that the theme is compatible with future versions of WordPress, and you’ll avoid a flood of emails from customers who have run into conflicts. Also, avoid deprecated functions18, which are functions that are “no longer supported and may be removed in future versions of WordPress.”

An easy way to check all of this is to install the Theme-Check plugin2119. This great little plugin runs the same tests20 as those that runs on submitted themes.

Theme-Check plugin
The Theme-Check plugin2119 has saved me many times from leaving out important details and using deprecated functions.

Documentation and Readable Code Link

Write thorough and helpful documentation for your themes. This will not only help users, but also cut down on the number of support requests you get from aggravated users. And trust me: the less support requests you get, the happier you will be. Document everything that’s unique about your theme that WordPress users might be unfamiliar with, as well as any built-in features such as custom backgrounds and headers, menus, and post formats. Also provide instructions on how to update the theme and on the proper way to customize the code (in case a user wants to create a child theme).

A well-documented block of code in Twenty Eleven
The Twenty Eleven theme is a good example of a theme with well-documented code.

Another important aspect of documentation is to make the code easy to read and understand. Some advanced users will want to customize the code, so it should be commented in a way that helps them understand what you’ve done under the hood. For a good example of well-documented code, check out the functions.php file in the default Twenty Eleven theme.

Child Themeable Link

As noted, many users will want to customize the code. The trick is that, when you release an update, the developer has to avoid overwriting the files that they’ve customized. The solution is for them to make their customizations in a child theme22. So, make sure to support this functionality by allowing child themes to be easily created.

If you don’t want users to have to worry about including a particular script when creating a child theme, then use the get_template_directory_uri(); function to reference the parent theme’s folder. To allow the developer to overwrite this file, use get_stylesheet_directory_uri(); instead, which references the folder in the child theme, if one is being used.

Page Templates Link

Your theme should support the various page templates that a WordPress website can have. Because you don’t know how each developer will use the theme, you have to prepare for all possibilities. This is where testing comes in. For a typical WordPress theme, you should at the very least support these templates: page.php, archive.php, 404.php, search.php, single.php, attachment.php and, of course, index.php, which is the ultimate fallback. For a full list of templates, check out the “Template Hierarchy23” section of the WordPress Codex.

WordPress Template Hierarchy24
WordPress’ “Template Hierarchy25“ is a great reference to have on hand.

You can also provide users with custom page templates. The two most common that I include with my themes is one with a widgetized sidebar (the default page.php) and one with a full-width page. You’ll likely be able to come up with other templates that users would benefit from once you’ve designed the theme.

Some theme developers use custom fields for this functionality, instead of page templates. This seems counterintuitive because the functionality is built into WordPress and is so simple to use. Creating your own page template is as easy as creating a new PHP file in the theme’s folder and adding the following PHP comment at the top (replacing “Full Width” with the template name of your choice):

Template Name: Full Width

Of course, the code that follows the line above is up to you and will determine what the template does.

A Note on Theme Options Link

There seems to be a misunderstanding about what users of premium themes expect. The common belief is that they expect an options panel that looks like the control panel of a Boeing 747, where they can tweak the smallest detail of the theme. Sure, users want to be able to control certain aspects of their website, but simplicity and ease of use trump bloat and complexity.

Airplane Control Panel
Your options panel shouldn’t be this complicated. (Image: Fly For Fun26)

When deciding whether to include an option in your theme, consider whether it’s really necessary and whether that functionality is already built into WordPress. The more options you add, the more complicated the code becomes and the steeper the learning curve for users. I keep the options for my themes to the bare essentials, and a goal of mine is to create a theme for which an options panel isn’t even necessary. I challenge you to do the same.

You can build your theme’s options on top of any one of the several great options frameworks. These are the ones I’ve come across:

Appearance Options Link

One reason to include an options panel is to enable the user to tweak the appearance of the theme without having to mess with the code. The option demanded by most users is surely to be able to upload a logo. Adding a logo is the easiest way for a user to personalize their theme. I enable it in all of my themes.

Preview of a simple theme options page
A snapshot of the options page in my latest commercial theme (based on the Options Framework2927).

Most theme buyers aren’t designers. They might not have an eye for color or be able to make informed design decisions. So, in addition to providing options to customize the theme’s main elements (like the color of text, the color of the call-to-action button, etc.), I include a selection of “skins,” which are basically just pre-defined palettes that a user can select from. This way, if the user doesn’t have an eye for color, they at least have options and aren’t restricted to one scheme. I usually provide several styles that cater to a variety of audiences.

Social Network Options Link

Most individuals and businesses have some type of presence on social networks, whether on Twitter, Facebook, YouTube or whatever the next big thing is. Because the design and placement of these social-network links vary from theme to theme, you can provide an option that allows users to customize the links.

Aside (and a little plug): I used to recommend including social-network options in the theme’s panel, but having given it more thought, I now feel it’s better suited to a plugin. New social networks pop up every day, and anticipating which ones your theme’s users will be on is hard. You will never be able to cover all bases, which is why I recently built a plugin that I’ll soon be supporting in all of my themes, and I suggest you do the same if you plan on including this feature. The plugin adds a new settings page where the user can create a list of social-network links. Users can select from the range of icons built into the plugin or built into the theme (if present) or upload their own. If this interests you, the plugin is called Social Bartender and is in the WordPress repository.

Advertising Options Link

You could also enable users to add advertisements, either through a widget or through an option that positions the ads in certain spots (like following the top blog post). Many people want to monetize their website and so advertising options would be important to them. Being able to select the locations of ads to suit the design is a selling point.

What To Leave Out Link

Almost as important as what to include in the theme is what to leave out. Many themes have options and functionality that are better done as plugins or that are already built into WordPress. Use the functionality that WordPress already supports, such as custom backgrounds30, headers31, post thumbnails32 and post formats33. This is easier to implement because WordPress does all of the heavy lifting, and many users are already familiar with it. That being said, if your theme doesn’t need this functionality, then don’t include it in the first place!

Example of bad shortcode usage
Shortcodes should not replace standard HTML tags. Many of the shortcodes shown above are unnecessary.

Shortcodes Link

Shortcodes are great for executing a set of functions, but they’re unnecessary simply to embed a link or add a class to an element. Use standard HTML tags for this. For example, don’t create a [quote] shortcode when the HTML <blockquote> tag does a perfectly good job. I’ve seen themes that have shortcodes for quotes, citations and headers but no support for the same styling with HTML tags. This is a big no-no. Many users will switch from theme to theme and will already have content on their website when they activate yours. HTML tags will stay the same, but shortcodes vary from theme to theme. Don’t force the user to go back through all of their content just to add your custom shortcodes. Use shortcodes only to execute functions, not to apply styling. There may be a few exceptions, such as to wrap a message in complicated HTML, but if you’re simply adding a class, then adding it to the “Format” menu in the post editor’s kitchen sink makes more sense.

A great tutorial was recently published34 by Luke McDonald that details how to add your own styles to the drop-down menu in the visual editor, giving you one more reason not to use shortcodes to style elements.

Plugin Territory Link

Don’t include options for things that should really be added with existing plugins; for example, Google Analytics and favicons. I hear someone in the back asking, “Why not include such things?” Well, person in the back, what if the user decides to switch themes, even to another of yours? They would lose all of that information and have to figure out how to get it back. The option is unnecessary, would make the code overly complicated, and would cause trouble when the user switches themes. Include only options that alter functionality that is unique to your theme; otherwise it’s better suited to a plugin.

Further Resources Link


Footnotes Link

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41

↑ Back to top Tweet itShare on Facebook


Sawyer Hollenshead is a web designer and digital entrepreneur — Freelancing all day and running Shaken & Stirred Web all night.

  1. 1

    For folks interested in developing quality commercial themes, I’d also recommend getting involved with the theme review team ( and/or submitting a free theme first to the directory ( It’s an excellent way to learn best coding practices and standards.

    • 2

      Sawyer Hollenshead

      November 1, 2011 10:28 am

      Totally agree. Contributing to the WordPress community in any form is a great way to grow — I’ve learned a lot, like the Settings API, by creating plugins.

  2. 3

    I’d recommend an excellent post on WPCandy as well as some of my own thoughts as some further reading. WPCandy’s especially good at the dos and don’ts of what to include and how to do it.

  3. 4

    In my experience there are many users who ask for integrated SEO modules, analytics and maps, contact forms etc. Even though there are external plugins people want ‘the full package’ and neglect any extra effort to be put.

    Another good thing to be considered is the plugin support. Since there are like 15K plugins out there it’s good for the top plugins to be tested before release (especially these for seo, contacts and other small and _must_ plugins). Good practice is maintaining a list with plugins that are not (fully) supported and compatible with the theme as well as making some gestures if needed and fitting the theme into the theme+plugin case.

    • 5

      Sawyer Hollenshead

      November 1, 2011 2:20 pm

      The users who are asking for those options may not be aware of the plugins available, how easy they are to install, and how big of a pain in the butt it would be if they switched themes and had to go through all of their content again to re-input SEO info. SEO, analytics, and contact forms have nothing to do with a theme’s appearance, therefor they shouldn’t be part of the theme’s options in my opinion.

      You make a good point with regards to supporting some plugins out of the box. The two major plugins I usually provide styling and test for are Gravity Forms and Disqus — Gravity Forms, because I believe it’s one of the best WordPress plugins out there, and Disqus because a lot of people use it (unfortunately). If you develop your theme and follow WordPress standards, your theme should be compatible with the vast majority of the plugins available as long as they also follow the same standards.

  4. 6

    Carlo Rizzante

    November 1, 2011 2:57 pm

    Quite an inspiring article, thanks Sawyer. Good tips, specially the one about the Theme-Check plugin. I’m definitely using that one in any themes I’ll realize in future. Apart for that, great list of resources. Thanks!

  5. 7

    Nice article.

    But still theme developers like templatic have not improved their quality and they sells their graphically rich themes.

    most of their themes are incompatible to wp 3.0 and still they claims they have wp 3.0 ready theme.

    they adds malicious code and google detects it as a malware and your online image is finished.

    they copies code from other theme developer and don’t even care to remove non applying codes.

    Over all their themes are not well tested in local.

  6. 8

    Thank for the article Sawyer!

    I have actually being doing some research in the last couple of weeks in regards to creating my own WordPress Themes Business, and this article has been very useful for to me. Although I have a few quick questions for you?

    Firstly, how many themes would you recommend having before you launch your WordPress Themes Business?

    Secondly, what is a reasonable timeframe to setup a whole WordPress Themes Business?

    And finally, which e-commerce plugin would you recommend using for your WordPress Theme Business?

    If you could help me out with those questions it would be greatly appreciated.

    Thanks again for the great article!

    Cheers, Ned

    • 9

      Sawyer Hollenshead

      November 1, 2011 2:30 pm

      Glad you found the article useful!

      I literally started with one free theme, although at the time I had no idea it would eventually grow into a theme business. After the free theme, I released a premium version with more features and that was all that I had for my “WP Theme Business Launch”. I would say one or two is perfectly fine for a launch, possibly with placeholders that mention there are more themes on the way.

      Setting up a theme business is fairly simple to do and not that time consuming once you have a theme ready to be released, hence why there are so many out there. All you really need is a PayPal account, domain, and hosting. However, building a business that is sustainable and provides value to its users is more time consuming since there are things like theme support and updates that require your time. It’s not something that you launch and watch money pour in — the work is ongoing. I wrote a bit more about this in another article:

      I’m currently using the Cart66 WordPress e-commerce plugin for my theme sales, and it has gotten the job done for me. I also know several other theme business that use Cart66 and seem happy with it.

      Hope this helps!

      • 10

        That’s perfect mate!

        Thanks heaps for all your assistance.


      • 11

        Really nice article with some genuinely thought-provoking points… For example, had never thought about translation before but makes perfect sense!

        Thanks :)

      • 12

        Hi, Sawyer
        If you don’t mind can you tell me how is the income from WordPress theme business? Main question can I make wordpress theme developing as my full time job and leave my current labor job (which pays me about 1200/month)? Do you think I will be able to make enough or atleast same as my current job by selling WordPress theme?
        Please reply,

  7. 13

    Why do you list frameworks such as Thesis and iThemes when developers are not allowed to use them to resell their themes.

    From what I know, and some online folks I talked to, you have to develop your own framework to avoid legal issues.

  8. 14

    More emphasis should be placed on avoiding future surprises. With WP 3.3 coming any minute now, a responsible developer would make sure their customer doesn’t have a bad trip when the upgrade prompt hits.

    DesktopServer allows you to run multiple WordPress installations in-parallel in faster then your typical single wp 5 minute install.

  9. 15

    hey great article! always wanted to get into this business… seems like it could be great automated cash flow, once everything is set up… how much do you make monthly?

    • 16

      Sawyer Hollenshead

      November 1, 2011 7:57 pm

      I don’t release that info, sorry :) Glad you enjoyed the article!

    • 17

      It’s not an automated cashflow machine, but a business that keeps constant investment. Once you have a well-selling theme or plugin, you’ll find that you need to invest even more time into support and upgrades.

  10. 18

    very interesting and inspiring article, thanks

  11. 19

    Thanks very much for this wonderful article! Very, very helpful and tons of great resources!

  12. 20

    Thanks for sharing this wonderful article…

  13. 21

    Really nice and help full article. Keep up the good work.

    Thanks :)

  14. 22

    Claudio Rimann

    November 2, 2011 1:10 am

    Didn’t know that there’s a theme-check plugin, will try that out soon! Very useful article, thank you very much!

  15. 23

    Piers Shepherd

    November 2, 2011 1:28 am

    This is amazing. I have been looking for something like this for AGES.

    I soon hope to release my first theme and this has changed my mind on many concepts. Thank you so much,

  16. 24

    Casey Mahoney Brad P

    November 2, 2011 7:22 am

    Hi! My friend has made many wordpress themes the past year.He has made some money.Its pretty cool you can make money off of themes on WordPress.

    Casey Mahoney Brad P

  17. 25

    Bart Grootveld

    November 2, 2011 7:35 am


    This post is awesome! I’m currently working on my first WP theme, planning on releasing it soon and these tips help a ton!

    Thank you! :)

  18. 26

    Connor Crosby

    November 2, 2011 8:26 am

    This is an excellent article and perfect timing! Thank you very much Sawyer :D

  19. 27

    Great article, Sawyer! So much good info for those of us just getting into the theme biz.
    You mentioned implementing an opt-in form to capture email addresses in return for downloading the free theme. This something I’ve been thinking about doing. I’ve set up standard opt-in forms in the past but not like this where it “unlocks” the freebie. Would you mind pointing out a few resources on how to set this up? Thanks so much!

    • 28

      Sawyer Hollenshead

      November 2, 2011 9:19 am

      I’m using Gravity Forms ( and their Mailchimp add-on. When a user fills out the form, I create a download link that appends the theme ID to it. (Ex. Then on I simply parse the URL and return back the appropriate theme .zip file.

  20. 30

    Wonderful article! I especially love the suggested use of plugins instead of theme options when applicable. I’ve been contemplating that very issue lately. With so many premium themes still including tons of options that will seriously mess up your content if you switch to a different theme, I think this is a direction we should all be heading in now.

    I also think shortcodes should only be included as a plugin. If shortcodes are specific to a theme, once you change themes, all those shortcodes no longer work! How bad is that?

    Also, I look forward to using your social networks plugin. Thanks!


↑ Back to top