WordPress is a cost effective, time efficient alternative for developing web applications. In this section, we will look into features of WordPress from the perspective of Web Application Project Managers.
WordPress is one of the most Continuous Integration / Continuous Development (CI/CD) projects on earth. WordPress is actively being developed all the time. The result? WordPress is growing, maturing, mutating, evolving continually, improving even further; offering better APIs, stability, richer functionality, robustness and security.
WordPress Admin Dashboard is the Central Control Panel of WordPress applications. WordPress comes with this feature packed bundle for no additional configuration or setup. The User Interface (UI) lets administrators manage every administrative aspects related to an WordPress application. In addition to Posts, Pages; all the custom post types, plugins, themes can easily be managed from this dashboard. Dashboard contains dynamic pages and widgets that handle administrative tasks.
Out of the box, WordPress provides many of components of web application development framework. You can think these components as boilerplate functionalities: • User Authentication • User Level Auhrorization • Presentation/View functionalities using themes • Front Controller using templates • Model using WP_Query Class and $wpdb object • Extensibility using plugins and widgets
Content Management Made Easy
Historically, WordPress was developed to manage and serve contents. Throughout its journey of evolution and adaptation, since version 3.0, Custom Post Types and Custom Fields came up along. This brought up a fully customizable content management system. Besides, pages and posts, site administrators and developers are now capable of adding custom content types with custom fields. Forms got lives. Add a custom type, add some fields, theme up a template for the custom type and a part of the data driven application is ready. No worries about Controllers, Front Controllers, Page Routers, Models or Views; yet you get the same functionality invariably.
By convention, WordPress lets you edit contents in Text Mode Editor using plain HTML, Visual Mode Editor using a WYSIWYG (What You See is What You Get) – mostly TinyMCE, and more recently Block editors. Aside, there are plugins that let you add yet another editing experience. The more content types and plugins you add, the more rich the administration manager interface becomes. You navigate throughout the management interface and work with, without typing any SLOC (Source Lines of Code). Using WordPress for web application development gives you unprecedented power and flexibility managing you application as if it’s still a blog. Mind blowing!
WordPress has built-in media management module in admin dashboard. uploading, downloading media like files, audio, video and managing folders is a common task in web applications. You can effectively use the module to manage your files and folders with additional attributes like title, tags, category and description. WordPress provides not only the interface, but also programming interface to automate or customize the media manager. Some people argue that default media manager in WordPress admin dashboard is not well organized. If you agree with, stay assured, there are many popular third party media manager plugins to aid you with better experience. By default, WordPress arranges media files chronologically. Third party plugins let you organize the media files even better.
As of writing of this article series, in April 29th, 2020, WordPress claimed to have 56,050 plugins in its repository excluding premium versions. During my analysis while preparing this series, I found this astounding that how many plugins in some important categories does WordPress plugin repository has; for example: 673 Anti Spam plugins, 461 API plugins, 162 Backup, 362 Booking, 291 Caching, 849 Community, 409 Custom Fields, 5,252 Ecommerce, 527 Events, 1,507 Forms, 485 Gutenberg, 1,168 Page Builder, 470 redirects, 700 Security, 1,037 SEO and 2,142 Social Plugins in the official repository.
The Role of Plugins
The plugin architecture of WordPress is an amazing way of doing new tricks. WordPress Web applications depend and enrich on the power or plugin subsystems. Plugins provide the main logic and content of web applications in WordPress. The architecture enables to add, remove or change features without affecting the core. Plugins also help modularizing the application in smaller and interconnected parts. Plugins help manage large web applications develop fast and maintain better.
Web Applications with WordPress are based on Post Types. WordPress lets you add custom post types. You can add or edit custom post types using your own theme or plugin. To head start, you’ll find many custom post type editor plugins – mostly free. Internally all the post types are stored in the same place – in the wp_posts table.
Separation of Concerns
Admittedly, separation of concerns is a bit complicated in WordPress. Everything here and there are loosely connected with hook events – actions and filters. This allows you getting things done as and when necessary, but sacrifices the separation of concerns and layered approaches. However, at its core, WordPress definitely and wisely separated major concerns like front end presentations in disguise of Views via themes and templates. Models are represented by WordPress Core objects and custom plugins.
WordPress mechanisms are well mimicked Controllers themselves. Whatever URL you seek from your application, the request goes first to index.php residing at the root of your WordPress web application. This in turn, loads necessary modules, decides how to dispatch the request to what template and returns the HTTP Response back to the client. You just get things done!
As of writing of this article series, in April 29th, 2020, WordPress claimed to have 7,472 themes in its repository excluding premium versions. Aside the official directory at wordpress.org, there are hundreds of thousands of other external online repositories, marketplaces and directories. Notable among them are themeforest and alikes. Altogether, the total number of themes for WordPress can easily be guessed to be hundreds of thousands, if not more.
Official repository has numerous themes under categories of Blog, Ecommerce, Education, Entertainment, Food & Drink, Holiday, News, Photography, Portfolio and lots more. You will get more themes from third-party theme marketplaces under categories of Magazine, Creative, Corporate, Retail, Technology, Nonprofit, Entertainment, Wedding, Mobile, BuddyPress, Real Estate, Education, Miscellaneous and many others.
Installing and activating themes allow to change the look and feel of a WordPress web application. Unlike websites and blogs, where users many switch among numerous themes, switching among themes in web applications is quite limited. A web application theme is tailor made, targeting most a single web application. You can make Child Themes from Parent Themes. This becomes helpful when you find a theme near nearly fits you application but needs a derived line of tweaks.
Instead of starting to build a theme afresh, you can start building a child theme for your application with minimal effort. Child themes gives you the ability to selectively override the behaviors of the underlying parent theme.
The Role of Themes in WordPress Web Application
You and most of us are used to judge themes as website beautification tools. This isn’t false in case of CMS and content based websites. However, the role of themes in WordPress Web Application is quite different. Web applications rely on themes at its presentation layer (think View in terms of MVC design pattern).
Theme – Customizing the Application Layout
Even, updating WordPress is easier than updating Linux distros. In Linux distros, you need to type commands like
sudo apt-get update && sudo apt-get upgrade. In WordPress, you just click the update link in the alert box. Updates are essential parts and parcels of WordPress. 10,000,000 or more websites use WordPress. Unfortunately, this made it the easy target of being a victim of attacks by the hackers and intruders. Fortunately, the more attacks are waged, the more the same are mitigated by the WordPress developers on the World Wide Web. True, vulnerabilities keep coming, as hackers keep finding out holes. This is why Update notices are so relieving and refreshing. With updates, you know, you’re more secured.
Updates applies to WordPress Core, Themes and Plugins. WordPress makes the process of updating a seamless painless experience.
WordPress differentiates among users with user roles the user in. User roles limit the set of permissions a user can access. These limits are based on tasks allowed to a user to perform. User management helps delegation of responsibility and authority, while eliminates the risk of unauthorized access. User roles have their own levels of power and authorization. Most frameworks don’t come with a user management interface; WordPress does. This gives WordPress an edge over other frameworks.
User and Session Management
WordPress is packed with User and Session Management features. When a new user signs up, the user receives a verification email containing the activation and login confirmation information. Once the user logs in the application, a session is established for subsequent communication between the front client machine and the backend server. Upon Logout, the session is removed from the server’s session storage. Session can be stored in-memory, in-file, in-database, in-another-system like redis or memcached. Email communication are made as abstract as possible in WordPress. You configure email details once, then, fire and forget.
Everything you imagine to be required is already bundled with WordPress User Management. In addition to the user management related to content, the User Roles Management is truly extensible. This empowers the application owner with Delegation of Authority and Responsibility. Users with Contributor Role can add new posts, but they can’t publish, for example. You can add or manage new roles to meet your custom needs. You will find many plugins that brings more power onboard. For example, using such plugins you can let paid members access certain areas, premium contents and features of your application.
Widgets are bare-bone plugins, but tightly coupled with themes, having designated functionalities. They are shown in the sidebar of the web application and serve the purpose it is developed for. Widgets are useful tools for web application development.
The Role of Widgets
Widgets are pluggable components usually displayed at the sidebar. Widgets has more applicability in web applications. You can divide complex data entry forms in your applications with smaller widget areas. One of the best things about widget is you can use same widget in many forms. This enhances the code reusability and minimizing source coding.
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