
In the old days, WordPress theme developers used to build loads of specific functionality into their themes, i.e. recipes, portfolios, testimonials, analytics, fundraising capabilities, custom post types etc. Commercial theme providers competed fiercely with one another to see who could pack the most functionality into their offerings. Many companies sought to become a one-stop-shop for everything an individual or business might need in order to launch an online presence.
The practice of locking users into using a theme by tying their content/data to the use of the theme is now highly discouraged. WordPress theme shops have slowly started to separate function from design in favor of preserving data portability.
This past week we’ve seen more evidence of this trend as two major theme providers have released plugins for functionality that users might previously have expected to find within themes. Justin Tadlock, who has long been a vocal advocate of data portability in themes, released a new free Restaurant plugin. The plugin allows restaurants to manage a food and beverage menu and works as a companion to themes.
WooThemes released Projects this week, a new plugin to handle portfolio capabilities. They said that preserving data portability is one of the main reasons behind this decision:
You’ve probably already noticed that our product strategy has deviated to separating features and code wherever possible, shifting our functionality into plugins, rather than bundling into each theme…It also ensures your data is portable, which aligns with a core WordPress philosophy.
UpThemes’ recent open letter to the WordPress Community is further demonstration that the tides are turning in favor of data portability. In it, they openly admit that it was impossible for them to continue to support all of the extra stuff that they had been building into themes:
Gone are the days of locking custom post types in a theme. No longer do we build pluginesque functionality into the core of a theme. We now build themes that rely on existing, awesome plugins that offer features that can be used with other themes, should you choose to update your design or build your own theme.
UpThemes is starting fresh and making use of plugins such as Church Theme Content and Recipe Schema to add extra functionality, instead of packing it all into themes.
We’re witnessing the end of an era in WordPress theme development. Bloat is no longer acceptable. Theme authors are creating leaner products with a stronger focus on designing for specific use cases. Anything extra is plugin territory.
This should be quite liberating for theme authors who no longer bear the pressure of having to pack all kinds of complex functionality and options into their products. Themes and plugins will no longer overlap as heavily as they have in the past but will act as compliments to one another.
Tips For Consumers

If you’re looking at this issue from a consumer standpoint, the most important thing to remember is that you are the guardian of your own data. If you choose a theme that locks you in, you are the one who will suffer the inconvenience of trying to transfer data when you change to a new theme.
Before installing a new theme, whether its free or commercial, ask yourself if you’ll be able to take all of your data with you, if and when you decide to stop using that theme. If the theme advertises dozens of capabilities, examine each of them to make sure that they don’t tie you down.
Last year we discussed this issue in a post about why you should never add analytics code to your WordPress theme. This is because analytics have nothing to do with the design of the theme. It’s a function that you’ll need to maintain throughout years of using WordPress with many different themes. You don’t want to have to transfer that data every time. Store it in a plugin and be done with it.
The same goes for portfolios, testimonials, recipes and custom post types. You’re likely to want this data on your website for years to come. Make sure that the theme you choose will give you that freedom. Find plugin substitutes for any data-driven functionality that is built into your theme. It’s not as convenient, but ultimately you’ll be glad that you kept your data separate from the design.
I know I don’t have Justin’s stature in the community, but I hope developers will consider taking a look at the Food and Drink Menu plugin for restaurants that I released a couple months ago. It’s also designed as a framework around which theme authors can build their sites, with a simple templating system, tons of hooks to filter and extend it with your own data, and support for multiple menus, shortcodes, widgets, etc.
Food and Drink Menu:
http://wordpress.org/plugins/food-and-drink-menu/
On GitHub:
https://github.com/NateWr/food-and-drink-menu
An introduction to the template system for theme authors:
http://themeofthecrop.com/2014/01/28/customize-restaurant-menu-templates/
In the long-term, I hope to build a suite of companion plugins that will work as a comprehensive framework for theme authors to build restaurant sites, with support for table booking and other useful features for restaurants.