A handful of times per week, we receive a similar pre-sales inquiry for WP Courseware…
“Why should I purchase a separate WordPress LMS plugin when I can purchase a theme which has the functionality included?”
Their reasoning is that for the price of WP Courseware, it’s possible to purchase an LMS theme which not only has some of the learning management functionality built in, but which also comes with a theme designed to work with that functionality.
And for folks who are new to WordPress, this is certainly a valid question. On the surface, a “functional theme” appears to provide more value, right? After all, you get a slick theme and there’s one less plugin to purchase and maintain.
Unfortunately, it's not quite that simple...
First...a Look at the "Official" Answer
For reference, let’s go straight to the source and take a look at what the folks behind WordPress have to say on this matter. These descriptions have been listed on one of the WordPress Codex pages for several years…
You can skin your weblog using readily available themes, or styles. You can also create and share your own themes.
Plugins extend the core functionality of your weblog. A large number of user-developed plugins are already available and can be used to do virtually anything you want to, with your blog.
But WordPress Has Evolved…and Blurred the Lines
With its rocket ship rise to prominence as the most widely used content management system (now powering 30% of the web and with a captain at the helm who has his sights set on breaking the 50% mark), WordPress has had to adapt to project requirements for which it wasn’t initially designed.
While it began as a simple blogging platform, it can now power multi-million (and even multi-billion) dollar global e-commerce sites, deliver headline news to millions of daily visitors, and deploy mass-scale political campaigns.
With all of these adaptations, very talented developers within the WordPress ecosystem have pushed the limits of what the platform can do and they’ve found new ways to use a lot of the functionality which has long been included in WordPress core code.
In a nutshell, part of this evolutionary development process has included a blurring of the boundaries between themes and plugins, with duties traditionally assigned to one spilling over into the other’s territory.
A few years ago, one of the first examples of themes beginning to become “functional” and replacing the need for a specific plugin played out in the real estate space. The theme market had always offered hundreds of attractive template options for realtors. However, as those sites need to be continually updated (which required constant back and forth with a web developer to update listings), theme developers eventually began building in simple interfaces for realtors to update their own listings.
Conversely, there are a growing number of plugins which are designed solely to alter the layout and aesthetics of a WordPress site. Our friends at Reaktiv Studios helped blaze this trail with their very popular Design Palette Pro plugin. Suddenly, the average WordPress user was able to significantly reduce the steep learning curve associated with the powerful Genesis framework and start building their own child themes without spending thousands of dollars on web development. Others have followed suit and there are now a number of “page builder” plugins, such as Beaver Builder, Divi, Thrive, Elementor, and others.
And So the Debate Begins…
For obvious reasons, open source software developers are very much in favor of standards and best practices. After all, open source projects are often shared and modified by thousands of developers within the community over time and one of the quickest ways to fall out of favor with your fellow coders is by injecting your unique brand of rogue cowboy (or cowgirl!) code.
That being said, there are opinions on both sides when it comes to debating whether or not themes should include functionality or if plugins should be designed to handle styling.
From Dumitru Brinzan, co-founder of the successful WPZoom theme and plugin development shop:
"A theme should not contain (or impose) features that can be easily handled by popular and easy-to-use plug-ins, for example SEO options. Leave that to professionals and experts in the field."
And from Matt Cohen, a Product Manager at WooThemes:
"From a business perspective, offering a single package containing all the functionality on offer is a tempting concept, as it’s the smoothest setup process for the customer."
And to represent an opinion somewhere in the middle, our friend Brian Gardner of StudioPress (creators of the Genesis framework) offers this:
"There are some instances, very minor ones, where the functionality is so specific to a theme that we feel it’s ok to include that into it."
However, at the end of the day most professional WordPress developers will publicly share that they believe there are good reasons to adhere to the old standard of themes handling design and plugins remaining dedicated to functionality.
And why do they continue to hold that line?
Let’s Take a Look at the "Themes for Design, Plugins for Functionality" Argument
The most obvious benefit of keeping themes focused on design and plugins focused on functionality is simply the versatility it offers. If you rely on a theme for critical functional components of your site, such as learning management system features, what happens when you decide you want to change your theme?
Yep, you guessed it…you lose the functionality. Now you’re out the cost of the functional theme and will be shopping for a new theme and a new plugin. You’ll also be burdened with the learning curve and configuration of the new products to replicate the setup employed with your functional theme.
Theme and plugins conflicts are not uncommon with WordPress. With tens of thousands of themes and plugins on the market, all written by developers of varying skill levels, code bases can occasionally clash.
With a more traditional installation which uses a theme for design and plugins for functionality, troubleshooting many issues is as simple as temporary changing out the active theme or disabling plugins one at a time to find the root cause of the problem.
Organized Update and Maintenance Process
On the back end of the process, another major benefit of keeping your functionality in plugins and out of your theme's functions.php file is that you can keep much better track of the updates and maintenance of your site’s moving parts.
Let’s say your theme’s functions.php file is modified over time as you make small tweaks to adjust its functional offerings. When you update the theme, all of that work is overwritten by the new version. Not good. With your functionality restricted to plugins, you’re updating those moving parts one chunk at a time and in an organized manner, only updating code which is specific to those features and not your entire theme.
Debunking the “Too Many Plugins = Doom” Myths
To be clear, keeping 30 or 40 unnecessary plugins installed on your WordPress site is not a good idea. It’s always best practice to run as few plugins as are necessary for your site to meet your project requirements, always ensure they are up to date, and periodically review them to remove any which are no longer necessary.
That being said, you’ve likely heard the age-old WordPress wisdom that having too many plugins installed is a bad thing and will slow down your site or compromise its security. This argument is only half right.
Having too many plugins installed isn’t the problem…having too many bad plugins installed is a problem. When plugins are poorly written or are not updated regularly by their developers to ensure compatibility with WordPress core code or current security standards, they can be a problem. Those should be removed or replaced with higher quality plugins which offer similar functionality.
You might also have heard the argument that placing functionality within a theme will lead to a faster website than using that same functionality within a plugin. Here is what Pippin Williamson, one of the most prolific WordPress plugin developers in the game and creator of Easy Digital Downloads, has to say regarding this myth:
"The fact of the matter is that this belief is ludicrous at best. There is zero difference in the way that plugin code is executed, when compared to theme code."
Why Did We Choose the Plugin Path for WP Courseware?
Here at the Fly Plugins offices, we’re fortunate to have some unique insights into this question. When we developed WP Courseware, it was the very first learning management system solution of any kind for WordPress. There simply were no existing options. We essentially “accidentally” built the first version of the plugin when creating one of our own online training courses in 2011.
We’ve shared this story in other blog posts, but it didn’t take us long to realize that the platform we’d used to build our own online courses (what became WP Courseware) was more important than the training we were delivering with it. That led to us refocusing our business on the development of a full-featured software package which could transform a WordPress website into an online classroom.
In our initial discussions with our development team we outlined a product roadmap, tirelessly evaluating functionality for potential inclusion into our first public release. We surveyed hundreds of prospective users for feedback on how they might use the product and we obsessed over mockups for user interfaces.
Not once did we discuss whether we were building a plugin or a theme. We didn’t even talk about it. It was simply understood by everyone involved that these features were logical to bundle into a plugin.
Fast forward a few years and we now have several competitors offering their own WordPress LMS solutions. Most of them are plugins, but a handful of them are marketed as “WordPress LMS themes”.
And unfortunately, it’s not uncommon for us to be contacted by prospective customers who are interested in WP Courseware because they have realized the corner they’ve backed themselves into by using a theme for learning management functionality. Many of them are incredibly concerned because they’ve spent hundreds of hours creating content, importing it to their site, configuring a course in that particular LMS theme, and now that they realize the limitations and constraints that the theme is imposing by building their online courses into it they’re afraid they’ll have to start all over. Fortunately, this isn’t the case and it’s a relatively seamless transition, but it ends up being a significant stress and leads to lots of wasted time.
But to offer a final opinion, I posed this question to our own lead developer, Cory Crowley. Cory has 10 years of experience building custom solutions for WordPress and has worked with a number of Fortune 500 companies. Here’s his take:
"In my experience, most of the time you don’t want things tightly coupled with your theme and thats why 99% of the time you should put your functionality in a plugin."
A Few Final Thoughts
At the end of the day, when choosing an LMS solution to offer online courses through your WordPress site, you need to factor in your own unique project requirements…
What is your business model and how will you be bundling and selling your courses?
What features are critical to the delivery of learning content in your specific niche?
What course model are you using? Self-paced? Mass start or cohorts? Single learner? Group learning?
What is your budget for the project?
The answers to these questions will not only impact which LMS solution you choose, but also how you implement it.
That being said, having operated several online businesses over the last several years I know how important it has been to be agile when operating those businesses. Things change rapidly and being able to adapt your business offerings and the technology you use to deliver those offerings will ensure long-term success.
With components which are critical to delivering paid online courses, such as membership management, e-commerce processing, and the solution you use to deliver your course content, you’ll have much more flexibility by using plugins for all of those requirements.