How WordPress Works

Summary: Learning about how does actually WordPress loads.

WordPress operates as a dynamic, server-side content management system (CMS) built on PHP and MySQL. Its process for loading files is systematic, ensuring plugins, themes, and core functionalities are integrated properly.

Initial Request Handling

When a visitor lands on a WordPress website via a browser, the server receives an HTTP request. This initiates the entire WordPress loading process.

Execution of index.php

The request first reaches the index.php file, located in the root directory of WordPress. This is the front controller for all WordPress requests.

  • File: /index.php
  • Purpose: It serves as the entry point of the WordPress application. This file doesn’t do much by itself it simply directs the request to the next file in the loading sequence, wp-blog-header.php.
// /index.php
require( dirname( __FILE__ ) . '/wp-blog-header.php' );

Execution of wp-blog-header.php

The wp-blog-header.php file is now responsible for bootstrapping the WordPress environment.

  • File: /wp-blog-header.php
  • Purpose: It loads the WordPress core framework by calling wp-load.php.
// /wp-blog-header.php
require_once( dirname(__FILE__) . '/wp-load.php' );

Loading Core Settings (wp-load.php)

The wp-load.php file is the heart of the WordPress initialization. It sets up the WordPress environment by loading configuration settings.

  • File: /wp-load.php
  • Purpose: It loads the core configuration file (wp-config.php), which is crucial for setting up the database connection and other system-level configurations.
// /wp-load.php
if ( file_exists( ABSPATH . 'wp-config.php' ) ) {
    require_once( ABSPATH . 'wp-config.php' );
} else {
    // Redirect to installation or display error
}

Configuration Settings (wp-config.php)

The wp-config.php file contains the database credentials (host, user, password, and name), salts, and other settings needed for WordPress to communicate with the database and authenticate securely.

  • File: /wp-config.php
  • Purpose: This file connects WordPress to the MySQL database, defines important constants, and manages custom configurations.
// /wp-config.php
define('DB_NAME', 'database_name');
define('DB_USER', 'database_user');
define('DB_PASSWORD', 'database_password');
define('DB_HOST', 'localhost');

Core Bootstrapping (wp-settings.php)

After loading wp-config.php, WordPress then processes the wp-settings.php file. This is one of the most important steps, as it loads the majority of WordPress core functionalities, hooks, and API libraries.

  • File: /wp-settings.php
  • Purpose: This file is responsible for setting up plugins, theme files, and core functions.

The steps in wp-settings.php:

  • Load WordPress plugin functionality: This is done by looping through active plugins and requiring each of them.
  • Load the active theme: WordPress will locate the current theme and initialize its functions.php file.
  • Load core libraries and classes: These include hooks, shortcodes, query handlers, and more.
// Load active plugins.
foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
    include_once( $plugin );
}

// Load active theme.
if ( TEMPLATEPATH !== STYLESHEETPATH ) {
    include( STYLESHEETPATH . '/functions.php' );
}

include( TEMPLATEPATH . '/functions.php' );

Plugins Initialization

Plugins in WordPress are initialized by wp-settings.php. WordPress goes through all active plugins listed in the database under the wp_options table in the active_plugins row and includes them. This allows plugins to register hooks, filters, and functions for later execution.

  • Key Files: Plugin files located in /wp-content/plugins/

Themes Initialization

After plugins, WordPress will load the active theme. The active theme is defined in the wp_options table in the database and will load the theme’s functions.php file. This file typically contains hooks and theme-specific functionality.

  • Key Files: Theme files located in /wp-content/themes/[active-theme]

WordPress Query and Routing

Once the core files, plugins, and themes have been loaded, WordPress moves on to handling the actual request a page, post, archive, or search.

  • The WP Query: WordPress creates a query to determine what content needs to be displayed. This query is managed by the WP_Query class.
  • Routing and Permalinks: Based on the URL structure permalinks, WordPress determines the type of request post, page, archive and prepares the necessary query to retrieve the right content from the database.

Rendering the Content

WordPress finally starts rendering the requested content. This typically involves:

  • Loading the appropriate template file single.php, archive.php, index.php.
  • Applying hooks and filters to modify the content if necessary.
  • Loading the content from the database via the WP_Query object.
  • Rendering HTML output.

The template hierarchy determines which template file will be used, based on the type of request post, page, category, tag.

Final Output

After WordPress processes the request and applies any necessary templates, it outputs the HTML for the browser to render. This marks the completion of the loading process, and the visitor can view the requested page in their browser.

«
»

Leave a Reply

Your email address will not be published. Required fields are marked *