I see many WordPress users mixing up the roles of a WordPress plugin with a theme (kind of like mixing business with pleasure) on a regular basis without knowing what they are doing. If you don’t know why WordPress invented the concept of plugins and themes, then this article is for you.
When you build a WordPress site, you perform an act of System Integration. You begin with the WordPress core, and customize it; by adding a theme and plugins. But not everybody is a Systems Engineer; and in the process of constructing their sites, they sometimes make integration decisions that have costly consequences later on.
In WordPress, “a theme modifies the way a site is displayed, without modifying the underlying software.” You select a theme based on the look and feel you want to (market or) present to your users. Later, if you decide the look and feel of an existing site does not meet your (marketing) presentation requirements; you can simply choose another theme, without affecting the way a site functions.
Depending on your functional requirements, you might use one or more plugins “to extend the functionality of WordPress.” You choose each plugin because it performs one or more specific tasks (such as payment processing) required of your completed site. If you later decide the site needs to perform additional or different tasks; you can add or remove plugins without affecting the site’s look and feel.
Sometimes, for reasons of convenience and cost, it is tempting to select themes and plugins that overextend themselves; by crossing that well defined difference between a theme and plugin. One example, is the use of “specialty themes” that bundle e-commerce functionality with look and feel. When considering whether or not to use a specialty theme, be aware that you are also making a decision between vertically or horizontally integrating your system.
By de facto default, WordPress is a horizontally integrated system. The theme you select and each of the plugins, has a specific role; the theme is in charge of look and feel, and each plugin performs specific independent tasks. In this model, themes and plugins can be mixed and matched without much cost; in time, material and labor.
When using a specialty theme, you are making the decision to vertically integrate your system. Vertical integration means that a single (theme or plugin) component is responsible for fulfilling the majority of a site’s operational (both presentation and functional) requirements.
Vertical integration is not necessarily a bad thing. Systems built this way are tightly coupled and perform quite well. The downside however, is that you’ve constructed a one off system, made from components that cannot be easily mixed and matched as your requirements change.
When you use a specialty theme to vertically integrate your WordPress site, you lose the flexibility of being able to easily mix & match, different themes and plugins. If, at a later date, you outgrow the existing functionality of the specialty theme, or if your marketing (presentation) requirements change, it will be difficult and costly to implement changes; without an expensive site redesign. Worse, is the prospect of having a site that is so tightly coupled; that only the original provider of the specialty theme can affect your desired changes. If that theme developer is no longer interested to update his theme, then you have a real problem.
The majority of WordPress themes and plugins are designed for use in horizontally integrated systems, because that is the de facto integration option for WordPress. WordPress itself, is flexible enough to allow you to construct horizontal, vertical, or even hybrid (“L” shaped and silo) integrated systems. However, if you deviate from the preferred horizontal integration philosophy, be prepared to either accept a one-off system or the prospect of difficult site redesigns; as your operational requirements change.
And if you are really in love with the features offered by a specialty theme, at least ask the provider about what kind of support you can expect, should you later decide to keep part of the specialty theme’s features while wanting to incorporate features offered by plugins or themes that are outside the vertical stack.
Don’t forget to read the Importance of using a properly coded WordPress theme article also.
Comments (11 responses)
On a related note, it’s relatively easy to force horisontal integration by taking the portions you need out of the functions.php and create 1 or more themes as needed if you ever needed to adjust the presentation of the site and needed to keep some functions (assuming they don’t rely too much on other files to function).
In the same manner, some plugins are poorly coded, they include format information, sometimes directly in the HTML code… overriding those in CSS is pretty tedious (I once had to re-code about 80% of one to strip out the un-necessary parts, fun days!)
Geez, I had no idea about any of this. I wish I had read this article before I started my website!
I found your most os blogpost are very interested. The blogpost concerning “wordpress-system-integration-101” especially interested me. [private message, with e-mail address, redacted]
Theme is built to display your website in a certain way. The theme shouldn’t rely on the plugin for a certain functionality as any modification made to the plugin might afftect the theme.
Nice post by the way. Thanks
Great write-up. When you do make a theme, it sometimes useful to base it on another theme that is well built and frequently updated, such as the new default theme twenty-ten. Your new theme is then a ‘child theme’ of the parent theme you are starting from. Both themes need to be on your server and the child imports the css from the parent. In WordPress Admin, you activate the child.
You need to plan ahead… Start by looking for plugins that can replace the functionality you want to keep, along with a theme that approximates your current look and feel. Create a test site, using your current configuration, and “practice” swapping your current specialty theme out for the replacement theme and plugins.
Wow! Nice explanation on what not to do when setting up a WordPress site. I have a theme that basically does most of the plugin’s work on my site. Never really thought of the consequences. What will I do if I ever needed to change the theme!