Being the most popular Content Management System on the planet, the ecosystem of WordPress surpassed that of other CMS platforms. From the beginning, WordPress encouraged plugins and themes to extend its capabilities. Thus the community of WordPress developers exploded along with the growth of WordPress.
Roughly estimated, WordPress powers 10,000,000 websites. Guess, how many people are directly related to WordPress? 100,000,000? Not unlikely.
Apart the guessing game, the index is towards the community of WordPress. May be the largest on earth! Frankly speaking, almost everyone who browsed some website came to be amazed or served by the WordPress and its community in one way or another.
You Rest Assured
When you consider WordPress for web application development, you rest assured by the leverage of the community that your development problems are either solved already or will be easy to find one. That’s a huge benefit for no associated cost!
When you consider WordPress for web application development, you rest assured by the intriguing interface of the WordPress themes.
When you consider WordPress for web application development, you rest assured by the appealing functionalities of the WordPress plugins.
When you consider WordPress for web application development, you rest assured by the power of WordPress wp-admin site administration manager.
When you consider WordPress for web application development, you rest assured by the plethora of WordPress documentations.
When you consider WordPress for web application development, you rest assured by the community of WordPress for getting helping hands.
When you consider WordPress for web application development, you rest assured by the market share of WordPress for commercial success.
Why Use WordPress for Web Application Development
Web applications are custom made. Unique by requirement, unique by design, unique by development, unique by deployment and unique by operation. Chances are, your custom web application concept won’t be runnable by existing plugins. That’s where the first part of web application development with WordPress begins. Start your own!
Unlike CMS where numerous themes can be applied to change the look and feel of the contents of the website, web applications are tightly integrated with one or a few themes for the specific purpose. At best, your theme can change the skin color, but beyond that, sky might fall upon. Say, you are developing an accounting system with WordPress, where users will entry journals using the payment, receipt, debit and credit vouchers. The theme that light up the application will be specific to the application only; it won’t fit an ecommerce application. Vice versa, a theme that luminates an ecommerce site, might bring load shedding to the accounting system. Separation of concern!
What Kind of Web Applications Can be Made with WordPress
Every blog or website running WordPress is inherently a web application; yes, a content management application. Time and again we add more and more features and functionalities to the application with the aid of plugins and tweaks.
An ecommerce site running WordPress and backed by Woocommerce plugin is probably the best example of WordPress being used as a web application. Components like Shopping Cart, Product Catalog, Tags, Categories and Product Attributes are all managed using the ecommerce plugins and themes.
In fact, full-fledged ecommerce sites running on WordPress inspired the world the think of developing more and more web applications with WordPress. They are right at their own right.
Running a forum with WordPress is clicks away, when you consider readily available plugins like bbPress. Membership, social networking, gamification, whatever…; you name a common web application concept, and some will name dozens of plugins for that. Excellent!
Behind the curtain, two different kind of components do the tricks for you, one is Custom Post Types and the other is Custom Fields. There are numerous plugins that help you manage custom post types and fields.
Moreover, you can incorporate these functionalities in your own Theme or Plugin. Practically speaking, whenever you start developing a web application, you should first make a custom plugin and a theme from available templates online or from your own repositories.
That said, WordPress isn’t a solution of everything; the ideal web applications you can build with WordPress are, not limited to, as follows:
- You need to prototype a simple application as fast as possible
- You need to develop a proof of concept
- Your application needs fine-tuned navigation
- [needs more stuff and rewrite...........]
For small project ideas, don’t reinvent the wheel. Do some research on Google. Compare plugins in popular repositories. Tinker with some plugins. Study the source code. This is a head start approach. Make it run, first. Make it better, last.
Develop an MVP (Minimum Viable Product). Make some change to make it even better. You don’t need to start from scratch on database design, security, user management, etc.
WordPress comes ready with all those. As long as it works, don’t touch the code.
Model-View-Controller (MVC) and Web Application Development are closely intermingled. MVC is a software architectural design pattern which segregates an application into three distinct logical components. The main benefits of MVC architecture are separation of concerns and code reusability.
The MVC architecture supports code reusability by means of Model components to be used over and over by different Views. MVC constrains Views from accessing data directly, but entitles that to the Model; thus attaining separation of concerns. MVC is commonly used for developing User Interfaces (UI) that are restricted to access database directly, rather represents the data provided by the Models through Controllers.
Traditionally, MVC is used in desktop Graphical User Interface (GUI) applications. With the advent of the Internet rich applications, the MVC pattern became widely popular among web application developers.
Models are the central components in MVC. Models are independent of User Interface, and acts like an Application Programming Interface (API) for the presentation Viewes. Models directly manage program data and business logic.
The Model is responsible for manage the data. User inputs are passed from Views to Models through Controllers. Controllers are not directly connected to Views.
Presentations are represented by Views, such as forms, content, article, chart, diagram or table. Multiple views for the same sets of Model information are allowed.
Accepts input and translates the routes into commands or functions, performs interactions with the model objects, and serves the request.
MVC vs Event-Driven Architecture and WordPress
By design, WordPress isn’t an implementation of MVC Design Pattern. Instead, WordPress relies on Event Driven Programming paradigm or Reactive Design Pattern.
Despite not being implemented MVC architectural design pattern, WordPress behaves all the same. Only recently, MVC is tried to be incorporated with WordPress through independent plugins. We will discuss more on MVC and WordPress later.
WordPress relies on event-driven approach, and builds it building blocks like action hooks, filter hooks, plugins and themes on top of that. WordPress is best utilized when you program it as is.
MVC vs WordPress
Though MVC isn’t adhered in WordPress, there are many plugins that lets you do programming in MVC design pattern within WordPress. WP MVC, Churro, Tina MVC are a few notable MVC plugins for WordPress.
Plugins as Models?
Not quite. Models are stored as separate files or classes. Plugins are not a head-to-head parable of Models. However, in WordPress plugins make it easy for you to program Models.
Themes as Views
So close a match. Views are used in MVC application to display data. In WordPress, themes do that job. You can use Code Refactoring to change your theme templates to act like Views simply by moving away all the data access source codes to different source files and define them as Models.
Templates as Controllers
This isn’t quite analogical either, but so close. In MVC applications, Controllers route input requests to mapped methods that interacts with Model about data and provides the same to Views. In WordPress, all the page requests are processed through the catch-all index.php file. This file, in essence, dispatches the request to template loader. Template loader determines which template file to be associated with the request in accordance with template hierarchy. The request finally gets served by the template file. This is the default behavior. However, this can further be customized using WordPress Rewrite APIs and Route APIs.
APPENDIX I - Articles of the Series
This article is a part of the series "WordPress Web Application Development".
Read all the articles of the series:
- Preamble - WordPress Web Application Development
- Chapter 1 - Introduction to Web Application Development with WordPress
- Chapter 2 - Fundamentals of Architectures for Web Application Development with WordPress
- Chapter 3 - Why Consider WordPress Ecosystem for Web Application Development
- Chapter 4 - WordPress Web Application Development Features for Project Managers
- Chapter 5 - Features and Components of WordPress for Web Application Developers
- Chapter 6 - Thoughts on WordPress Web Application Development