You may have just developed your theme framework for yourself and/or your team in which case the steps involved in releasing your code won't be relevant. But if you want to make your code widely available, you'll have to find some channel to distribute it, and decide whether you want people to pay for it or not.
In this tutorial, I'll look at the following options:
- The WordPress theme repository
- GitHub or a similar repository
- A third party theme vendor
- Your own website
I'll also look at 'freemium' options, which include a bit of both of the above.
Releasing Your Framework for Free
If you've developed your framework to support your own work but would also like to make it available for others, you might consider releasing it for free. This gives something back to the WordPress community and gives you access to a host of talented developers who might help you improve your framework.
You have two main options if you want to release your code for free:
- Submit it to the WordPress theme repository
- Make it available for download via a repository service such as GitHub.
The WordPress Theme Repository
This is the first place WordPress users and developers will look if they're in the market for a free theme, and is the most trusted source of free WordPress themes. Submitting your theme doesn't cost you anything, but you will need to ensure it meets the Theme Review Guidelines:
- Code Quality. Your code should meet the WordPress Coding Standards and must not generate any deprecated function notices, warnings, or errors.
- Presentation vs. Functionality. Themes are for presentation, so if your theme includes a lot of functionality, it should probably be abstracted into a plugin instead.
- Theme Features. Your theme should support all core WordPress features, regardless of whether it has its own additional features.
- Template Tags and Hooks. These should be implemented correctly.
- WordPress-generated CSS classes. Your theme must use these where relevant.
- Template Files. Your theme must use these correctly.
- Security and Privacy. Themes must ensure data security and user privacy.
- Licensing. Your theme must be licensed under a GPL-compatible license.
- Naming. Your theme’s name must not include “WordPress” and it should be unique, to avoid confusing users.
- Credit links. Your theme should use these appropriately.
Documentation. At a minimum, you should provide a
- Theme Unit Tests—Your theme must pass these.
- Theme Obsolescence. You should keep your theme current after it is accepted.
The Theme Unit Test is the test which theme reviewers will run on your sites part of the review process, so it's worth running it on your theme before you submit it. The steps are:
- Download an XML file containing test data.
- Using the Import menu, import the xml file to your theme.
- Install a set of plugins via the Developer Plugin.
- Perform a theme review using the process outlined in this guide.
If your theme passes the test and meets the standards listed above, then you're ready to submit it. Upload it following the guidelines given and don't be impatient - the theme testers are volunteers doing this work in their own time, so will not be able to give you an answer straight away.
Using GitHub to distribute your theme gives you more control than you would have if you were using the theme repository and can save you a few steps when you're updating the theme.
All you need to do to set this process in motion is create a public repository with your theme files. You may or may not want to create a specific account for your framework (or an organization associated with your account), to keep things separate from your own GitHub account if you have one. The advantage of doing this is that you can add plugins and child themes in separate repositories in the new account and create a space for everything relating to your framework which stands alone.
It's easy for your users to download your code from GitHub, and if they want to work on it themselves then can simply clone it. In addition, you can encourage other users to make improvements and additions to your framework by forking it, but make sure you check any changes before you accept the revised code back into the main branch of your repository.
GitHub is a useful tool if your framework is aimed at developers, but if you're aiming at users, you'd be wiser to use the WordPress theme repository, which is more user-friendly.
Releasing a Premium Framework
Again you have two choices when it comes to releasing your framework as a premium product:
- Distribute it via a third-party theme vendor
- Distribute it on your own website
Using a third-party vendor will give you the advantage of making your theme more visible, but does mean the vendor will take a percentage of your sales. In the early days, this can be well worth it as you'll have access to a larger number of potential users so will probably make more money anyway. If your framework becomes more established, you might then decide to distribute it yourself.
Third-Party Theme Vendors
There are a number of theme vendors out there which you might use. Many of them only sell child themes for their own framework, so make sure you use a vendor that sells standalone themes. You'll also need to make sure that your framework can be marketed as such, rather than as just a standalone theme.
I won't provide a list of theme vendors as the market changes constantly, but can only advise you to search throughly and find a vendor which sells the kind of theme you've produced, to the market you're aiming at. And check how big a cut they take and that they use the GPL license.
Distributing your framework yourself will give you more control over how you sell it and how you bundle it and the child themes and plugins you'll develop to support it. You won't have access to a large market this way but you could decide to adopt a 'freemium' model where you make some code available for free via the WordPress theme repository, and other code available by subscription.
To sell your framework on your own site, you'll need to create documentation for your users and set up online subscriptions and secure downloads. A plugin like WooCommerce will help you do this. You'll also need to figure out a marketing plan.
Using a 'Freemium' Model
The idea of 'freemium' themes and plugins is developing all of the time and new ways of making this work are always appearing, but here are some ideas:
- Release your framework for free and develop child themes and plugins that are premium.
- Release a simplified version of your framework for free, with extra functionality available for a price.
- Release your framework for free and make support and/or docs available to paid subscribers.
The advantage of this model is that you have access to the WordPress theme repository with thousands of users downloading themes from it every day, and you can point them to your own website to access premium features, giving you more control than if you used a theme vendor.
Releasing your framework for other users gives you an opportunity to either make some money or give something back to the community. As I've shown, you can choose to release your code for free or for a price, or a combination of the two.
Which of these you choose will depend on your own circumstances and the users your framework is aimed at. Whichever you do choose, make sure you keep your framework files updated for users and review your strategy every now and again.