Pages

WordPress System Integration



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. –
Every time 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.


The majority of WordPress themes and plugins are designed for use in horizontally integrated systems, because that is the de factor 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.