WordPress has hundreds of built-in components that can use easily to build web applications. Be it security, database access and mapping; URL rewriting, mapping or routing; caching; AJAX, polling; WebSockets, Options Configuration; web services, microservices or REST API; or be it something else not quite heard of – WordPress either has components for that or has way outs to build one.
From the architectural point of view, WordPress isn’t comparable to other web application frameworks like Laravel, CodeIgniter, Drupal, Joomla, dJango, expressJS, beeGo or alike. From the operational point of view, WordPress brings you the same result with different tricks.
Application Programming Interface (API)
WordPress is rich in procedural APIs and Classes. In fact, WordPress has far more APIs than required by ordinary websites and blogs. Fortunately, this can well be harnessed in web application development.
Caching
Caching is a website performance optimization mechanism. WordPress supports both persistent and non-persistent types of cache. Non-persistent caching is provided by WordPress cache object. Persistent caching is provided by Transient API.
Need for Speed isn’t a game, it’s a reality. We all like speed. Websites slow or sluggish in performance, risk losing visitors, loyal customers, and more importantly, lose rank in SERPs (Search Engine Result Pages). WordPress has Transient API to take advantage of caching features. If that’s not enough, you’ve got production ready, industry standard caching server plugins like redis and memcached.
WordPress is designed to work at its peak performance without third party caching plugins at all. However, when you need more speed, that approach is quite enough, rather turn to cache plugins.
Aside the data cache plugins, WordPress is aware of HTTP Response caching mechanism. Further, as always, you can install HTTP Response Caching Plugins at your disposal any moment you think of it.
Classes and Methods
Excluding internal functions, WordPress has more than 400 public Classes that you can use in your web application. These Classes exposes nearly 4,000 Methods. …
Dashboard Customization / Programmability
WordPress features many API functions and Classes to customize the default dashboard. Web application developers use these APIs to remove default content oriented administrative pages and widgets and add their own web application specific administrative pages and widgets to let the administrators and project managers manage the application.
Database Management
Database management tightly coupled in WordPress. WordPress runs on a predefined set of MySQL tables optimized for content management, site management and user management. While this is quite adequate for most of the CMS web applications like blogs and websites, web application demands its own way of database management. For example, ecommerce web applications developed with WooCommerce and other ecommerce plugins, create and manage their own tables.
When you’re onto developing a custom web application with WordPress, you’ll eventually come up in the turn of creating and managing your own tables. Fortunately, no matter where and how you create tables in default WordPress database designated for the application, WordPress lets you handle the tables programmatically like other built-in tables. When you need, top notch control over your tables, you can use PHP functions to directly manipulate your tables.
Databse
By virtue, WP_Query is the standard way of interacting with underlying MySQL database of WordPress application. It is used to save and restore posts, pages, taxonomies, custom post types and custom fields. WP_Query allows you to search by categories, topics, tags, fields, date, status, author or any other taxonomies.
Internally, WP_Query makes use of SQL SELECT command. If you need better control over your database which might have your own custom tables, you can omit WP_Query and write direct SQL statements, even STORED PROCEDURES to save and restore data from one or many tables – joined or dispersed.
In addition to WP_Query, WP_User_Query is often used to manipulate user’s table.
Database Queries
WordPress is a database dependent platform. All WordPress applications interact with database in one way or another. WordPress is versatile enough in managing database tables.
Data Operations
A logged in user is expected to save or retrieve data with the system. Data needs to be validated, verified and sanitized to prevent malfunctions of any kind – intentional or unintentional. WordPress has built in components for data validation, verification and sanitization. This help us preventing malicious information or code not being stored into the system.
Functions
Excluding internal Functions, WordPress has nearly 2,500 public Functions that you can use in your web application.
Hook…, Filter…, Action!
At its core, WordPress is programmed in Event Driven Architecture (EDA). EDA is a reactive programming paradigm. In EDA, some parts of the program publish or create events and other parts subscribe, listen and act up the event as and when fired up. In WordPress, events are broadly categorized as Hooks dividing them into Filters and Actions.
WordPress Hooks are piece of code blocks to interact between Hook Publishers and Hook Subscribers to interact at some specific, predefined moment of code execution flow. They build up the foundation for plugins and themes to interact with WordPress core and other custom components in the application. To use Filter Hooks or Action Hooks, you need to register (subscribe) to a specific hook and write a callback function. You can also use anonymous functions as callbacks.
Action
Actions are events that occur during a request. You can use WordPress actions to execute certain functionalities after a specific event is completed. Action Hook Functions do not return anything back to the calling hook. With action hooks, your function just gets called automatically on the eve of the event.
Filter
Filters are functions that are used to filter, modify, and return the data. Filter Hook Functions accept a variable, modify it and return it to the calling hook. With Filter Hook Functions, able you are to change data during the execution of WordPress.
WordPress provides 1,600 different hooks that you can use. But you are not limited by that number only, rather, you can create your own hooks so that other developers can extend or interact with your plugin or theme. You probably heard of Addons for Elementor or Addons for WooCommerce. These addons are plugins themselves. They interact with Elementor or WooCommerce custom hooks. Without custom hooks published by Elementor or WooCommerce, the scope of addons for them would never be possible.
REST API
Representational State Transfer (ReST, “REST”) is a software architectural style to facilitate Web Services. REST came into being as a better alternative to SOAP Web Services. RESTful Web Services (conforming to REST architectural style) allow the requesting systems to access or manipulate Web Resources by using a set of Stateless operations. RESTful Web Services provide interoperability among dispersed systems.
Being Stateless, RESTful services are fast performing and reliable. There are six salient and mandatory features (more accurately, REST Constraints) of RESTful Web Services:
- Client-Server Architecture
- Statelessness
- Cachability
- Layered System
- Code on Demand (Optional)
- Uniform Interface
Web Services APIs adhering to the above six constraints are called RESTful APIs (REST API, for short). HTTP-based REST APIs has the following features:
- a base URL
- standard HTTP methods like GET, POST, PUT, PATCH AND DELETE)
- a mime-type or media type like “application/vnd.collection+json”
REST API and WordPress
WordPress is extremely rich is REST APIs. These APIs provide interfaces for web applications to interact with your WordPress web application by sending and receiving JSON data objects. WordPress REST API is a developer focused feature of WordPress, providing access to application data. WordPress REST API is supervised by default authentication and authorization, so that public data is publicly available, while private data needs appropriate verified sessions to be accessed remotely.
If your application is targeted to serve external or remote clients with data from your application, REST API is handy. Any programming language capable of making HTTP requests and interpreting JSON can use the REST API to interact with your web application.
REST API is best utilized in your web application, when you intend a structured and extensible way to get data to and from your web application. REST API is technologically similar to XML-RPC API in WordPress. However, WordPress REST API is considered a superset of that.
Routing
WordPress web applications are considered complex and larger than WordPress CMS sites. This necessitates the handling of custom URLs. Chances are, the usual mapping of custom post types to a custom template file will not suffice alone for your application. Eventually, you will look for other means. Routing comes into assistance here upon.
Note that WordPress Routing is different than WordPress Rewrite API. Rewrite API make human readable URLs. Routes are responsible for mapping custom URLs and functions in WordPress. They tell the WordPress routing system what to do when URLs are matched to some given rules.
Scheduling
Cron aka scheduling, probably, is self-explanatory to most of the web developers. Lest you wonder, Cron is a technical term rooted in the early days of Unix OS development. Cron is used to perform a task by running a command on a scheduled time or at regular intervals.
WordPress has its own Cron scheduler. WordPress web applications that might need doing some house-keeping, or automating administrative task, may use the cron scheduler. WordPress scheduler is different from usual cron jobs. In WordPress, scheduled cron jos has no means to get executed until or unless something or someone requests an URL from the host. Care must be taken to avoid any misuse.
Settings API
Since WordPress 2.7, the Settings API allows admin pages to be incorporated in the dashboard. It lets you declare admin pages, sections and fields with sections. A WordPress developer may wish to write his own settings page. But, that time consuming, error prone, and non-standard. Instead, the Settings API provides a visually consistent, robust way out to get the dashboard integration job done, for less work.
Templates
WordPress has a simple templating system for themes. Interestingly it is not as complex as many other templating engines, yet it offers multi-faceted capabilities for presentation layers of your application. Template files contain HTML, Template Tags and PHP code. When someone visits a page on your WordPress application, WordPress loads a template based on the request.
The Post Type associated with the template file determines the type of content to be displayed. The Template Hierarchy intelligently matches which template file will be loaded. The most critical template file is index.php, which is actually a catch-all template in case no specific template is matched for the URL requested.
In addition to template files, there are Template Partials. These files are included in template files for adding rendering functionalities. Common Template Partials files are header.php, footer.php and sidebar.php source files.
As a WordPress web application developer, you can create as many template partials as you need and include them in other template files. Common WordPress template files are index.php, style.css, rtl.css, comments.php, front-page.php, home.php, header.php, singular.php, single.php, single-{post-type}.php, archive-{post-type}.php, page.php, category.php, tag.php, taxonomy.php, author.php, date.php, archive.php, search.php, attachment.php, image.php and the infamous 404.php source files.
You can use Template Tags to display information dynamically or include other template files. To include header, use get_header(), for example. Other notable functions are get_sidebar(), get_footer(), get_search_form(), and the favorite get_template_part().
URL Rewriting
Well-designed web applications rewrite URL permalinks in a human readable fashion. URLs should be hackable – it means – end user should be able to change a given URL to guess another URL and browse directly to that URL. WordPress has a long reputation of managing beautiful and hackable URL permalinks almost automatically.
Traditional HTTP URLs are ugly, harder to read by human and not hackable. These URLs append parameters to a resource link with ampersand signs (&). Here is an example: https://www.google.com/search?client=firefox&q=hackable+url , whereas a hackable version of the same URL could be designed as https://www.google.com/search/client/firefox/query/hackable+url .
Though WordPress runs under the supervision of a Web Server like Nginx, Apache; and web servers usually translate the URL rewrites; yet, WordPress has its own URL rewriting modules, classes and functionalities. Whenever you write a post or a page, the URL which might look like mywebapp.com/hello-world , actually, its quite different to the system like, mywebapp.com/?p=1 or something like this.
Web applications usually require custom URL routes. On an MVC application, this is accomplished in the front controller. Controllers translate the URL and perform mapped functions. In WordPress, the process is almost abstracted from the developer. Unless otherwise, you need fine control over URL, you can let WordPress do be best about URL rewriting, mapping and responding user requests.
XML-RPC
XML-RPC is a remote method invocation (also, remote procedure call) protocol that uses XML to represent data and HTTP for transportation. Clients make calls to remote server by packing data in prescribed XML format and sends the same by HTTP Request. Upon receiving, the server, prepares appropriate HTTP Response by calling the mapped methods, and sends the same to the clients.
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