Some methods are more convenient for the developer at the expense of the user, and vice versa. In this blog post, we’ll explore the pros and cons of each, including two “best of both worlds” approaches.

The separate codebase approach

A user-friendly approach would be to maintain two separate codebases. One for the free theme. One for the paid theme.

With a parent/child theme structure, the child theme should simply be site-specific theming and customization of the parent theme. Most people who use them won’t be customizing the child theme – they will just install and run with it. If you plan to make changes to it, you should rename the child theme and use it as a starting place for your own custom child theme.

While a child theme might be updated in the future, those updates shouldn’t be pushed out to existing customers through the “Update Theme” dialog in WordPress. Customers also shouldn’t try to integrate updates with their customizations. The same logic applies to starter themes like Underscores. It gets updated often, but people who used it as a starter for their own custom theme aren’t monitoring those updates and integrating them with their own customizations.

If you have two or more websites with largely overlapping requirements, you should build a custom parent theme and then have each site have a site-specific child theme. This is one of the few situations when I specifically don’t recommend Genesis.

I’ve worked on a network that used Genesis as the parent, a “network” child theme, and then had site-specific plugins as the grandchild theme. It’s overly complicated and just not worth the hassle. Simple things like template hierarchy require custom code to make work across plugins, parent theme and child theme.

A “need” for a grandchild theme is a sign of a poorly implemented theme structure.

If people start selling “premium” grandchild themes, would they be customized with great-grandchild themes?

Conclusion: Convenient for the developer, not so much for the user.

Best of both worlds: a “Pro” plugin

Instead of maintaining two separate but overlapping codebases, or asking users to “merge” child theme updates, a freemium theme developer can separate any “Pro” functionality into a plugin.

Let’s break down the flow of the user:

User downloads free parent theme.

User buys paid “Pro” upgrade plugin.

User makes customizations via child theme.

Developer releases free parent theme updates.

Developer releases paid “Pro” plugin updates.

User is happy because their customizations are safe in a child theme.

Developer is happy because they don’t have to maintain separate but overlapping codebases.

The Theme Foundry uses this strategy with their popular free Make theme. Pro functionality is separated into a plugin called Make Plus.

Here’s what Corey McKrill, developer at The Theme Foundry, had to say about separating freemium theme upgrades in a plugin:

What we’re doing with Make and Make Plus, the free theme and premium plugin, works out really well — for us and the customers and community we serve. Our free theme on WordPress.org is the perfect point of entry for folks unfamiliar with our brand. It’s powerful, extendable, and indicative of our code quality and dedication to the WordPress project. Our codebase is public on GitHub, and our transparency with our development process is one way we can build trust with end-users and developers alike.

With the premium plugin, we get to build on the foundation that the free theme provides. So without taking anything away, we can offer more features, deeper integrations, and dedicated support. For one-man and one-woman shops, this means they get a premium theme for their site that’s been through the riggers of the theme review process and several levels of peer code reviews.

For developers and designers who do client work, using our premium plugin, Make Plus, along with the free theme, means there’s no interruption in their workflow — they create with the child theme while we continue to update and innovate and improve on the parent theme and plugin.

We really believe this is the ideal way — in the spirit of WordPress best practices — to offer a premium product.

The only downside I can think of is that it may be confusing for a user to wrap their head around the concept that additional theme functionality can be delivered via a plugin, but after that user education hurdle is jumped, everybody wins.

Conclusion: Best of both worlds.

Best of both worlds alternative: Freemius

Freemius is a company that helps WordPress developers monetize their products, and offers a pretty unique solution to the freemium codebase management conundrum.

With Freemius, plugin developers only have to develop and maintain ONE code project with all the logic (free and paid). Our WordPress SDK provides a license related methods which can be leveraged in order to “tell” Freemius what’s the premium logic. For example:

Then, when the plugin is ready for release, instead of deploying it directly to the WordPress.org SVN, first it should be uploaded through Freemius14 management dashboard. Our sophisticated PHP pre-processor will automatically process all the plugin files and will generate two [theme] versions.

Home-rolling a PHP pre-processor is an option too, but there’s value in having all that work done for you with Freemius.

In addition, Freemius can handle other tasks a freemium theme author might want, like payment processing, software licensing, and analytics.

Leland is the lead developer at Themetry. He's passionate about making it easy for people to make beautiful, high-quality websites. Leland manifests this passion by making and writing about WordPress themes literally all day.

Post navigation

1 comment

I put a lot of thoughts on this topic for over an year, none of the listed ways works in all situations, I mean if you rely only on wordpress.org and freemium model, then yes a pro plugin is a good option ( just pay attention on how you make this clear for users, since they will install as theme ), however using this model you can’t have your pro plugin on ThemeForest for example and would be quite hard to sell it directly since users will be confused if you ask them to install first a free theme.

Another issue with pro-plugin option is that your premium users will rely on the w.org theme listing ( which, you know can get suspended for different reasons ) and you need to take this into consideration .

The best solution that I am thinking of is to have some kind of theme generator, something like freemium is doing, but not only it, Ideally using something like grunt to just remove some files and replace some settings and generate a free theme out of the pro one .