More Than CMS and Blogging

WordPress is most commonly thought of as a blogging and content mangement system.

When you look at the underlying platform’s core carefully you see all the components you expect in a PHP Framework just waiting to be harnessed.

Pre-Built Backend and Taxonomy

One Super Awesome Application feature of the WordPress framework is the backend is already built. This backend is easily customizable with helper functions, admin objects and user roles.

The Taxonomy included with WordPress has been around a long time and is both flexible and stable. It supports categories and tagging. You can even create custom taxonomies.

WordPress natively supports different content types for posts and pages along with CPTs (Custom Post Types). WordPress allows you to simply add Advanced Custom Fields to content types.

Creating such a powerful back-end with a traditional framework would take hours of development time.

A Feature Rich Framework

WordPress Core offers many APIs, Classes, and Helper Functions. There are so many that I will just list the most common ones here. The WordPress Codex is a great reference

WordPress has a rich Application Proramming Interface. Just a few used in App Development. More classes and reference

  • Database
  • HTTP
  • REST
  • File Header
  • File System
  • Options
  • Plug In
  • Widgets
  • Shortcode
  • Transients
  • Rewrite

Some of the Core Classes in WordPress. More classes and reference

  • WP_Post
  • WP_User
  • WP_User_Query
  • WP_Widget
  • wpdb
  • WP_Role
  • WP_Roles
  • WP_Theme
  • WP_Scripts
  • WP_Styles
  • WP_Ajax_Response
  • WP_Dependencies
  • WP_Filesystem_Base
  • Walker
  • WP
  • WP_http
  • WP_http_cookie
  • WP_http_curl
  • WP_http_encoding
  • WP_http_fopen
  • WP_http_fsockopen
  • WP_http_streams
  • WP_Locale

This list is huge! I will break it down by category here.Function reference by category

  • Posts
  • Custom Post Status
  • Custom Post Type
  • Post insertion/removal
  • Pages
  • Custom Fields (postmeta)
  • Attachments
  • Bookmarks
  • Terms
  • Other Post
  • Categories
  • Category Creation
  • Tags
  • Taxonomy
  • Admins, Roles and Capabilities
  • Users and Authors
  • User meta
  • User insertion/removal
  • Login / Logout
  • Feed Functions
  • Comment,Ping,Trackback
  • Comments Loop
  • Comments Pagination
  • Filters
  • Actions
  • Plugins
  • Widgets
  • Settings
  • Shortcodes
  • Theme Include
  • Other Theme
  • Formating
  • Time Date
  • Serialization
  • Options
  • Transients
  • Admin Menu
  • Toolbar
  • Form Helpers
  • Nouces &amp Security
  • Localization
  • CRON
  • Conditional Tags Index
  • Script and Style
  • Database
  • Miscellaneous

WordPress Supports MVC

There are a couple of WordPress Plugins dedicated to MVC, however, WordPress can support MVC right out of the box. To accomplish MVC the “WordPress Way” it is really a matter of symantics.

Model Plugins & Child Theme Functions

Plugins are the prefered method of managing business logic and data.

Best practices in WordPress is the use of a Parent Theme and Child Theme pair. The Child Theme is used to preserve modifications should the Parent theme be updated. All themes include a functions.php. The Child Theme functions.php is also used for business logic.

Coding in Plugin vs. Theme? A plugin is always the best answer, however, a general rule of thumb; When changing business logic or data you should use a plugin. When changing the core or theme you may use the Child Theme functions. Never change the Parent Theme or Core Directly.

View Theme & Widgets

Your Parent Theme defines the presentation structure. You modify the Parent Theme with application specific requirements within the Child Theme.

WordPress natively supports a robust Template Hierarchy for the presentation of content.

WordPress Widgets add content and features to sidebars. The term sidebar is very misleading; a sidebar is a registered container in the DOM for widget content. It does not have to be used as an <ASIDE> or sidebar element.

Controller AJAX,REST,Template Loader

Natively WordPress supports AJAX requests in the Admin Dashboard. Non-Privileged and front-end AJAX is easily supported with Script Localization.

Since 4.7 WordPress has a pretty good REST API built right into the Core. Heck you can even easily integrate OAUTH apps!

WordPress page page request as processed through index.html which calls the Template Loader. The Template Hierarchy determines which template and assocatied controller code is loaded and executed.

Scalability Easily Integrates

WordPress is incredibly flexible. PHP libaries for app building can be included right into WordPress, in fact, many have already been built out in the form of plugins. For example if you love TWIG, then install Timber for WordPress.

Incorporating Front End frameworks such as Bootstrap, task runners, and CSS preprocessors is seamless.