WordPress 工作原理、程序文件执行顺序(世界的构成)
在尝试自定义一个属于自己的WordPress网站时,总是有个迷惑,其内核文件到底是按照什么顺序开始挂载PHP代码,是内核文件先执行(其中有调用函数)还是functions.php文件先执行(其中定义一系列的基本函数)。为了了解WordPress建站结构,明晰其中的工作原理,在此对其进行探索,并记录成文章。
WordPress首先前端页面生成开始在根目录下的index.php文件,这是通过Web服务器的rewrite规则实现的。当通过浏览器访问网页时,Web服务器会默认首先访问该URL下的index.php文件。然后通过index.php文件一步步引导WordPress环境启动(加载meta、预定义变量、预定义函数等),再分析请求URL返回相应数据所组成的前台页面。
第一步:载入index.php文件(一切的始端)
该文件关键源码如下:
1 2 3 4 |
// 定义是否加载主题文件,true为加载 define('WP_USE_THEMES',true); // 加载wp-blog-header.php文件,该文件用于启动WordPress环境以及模板 require('./wp-blog-header.php'); |
第二步:载入wp-blog-header.php文件(一气化三清)
该文件关键源码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
if ( !isset($wp_did_header) ) { // 判断wp_did_header变量是否已经设置 // 如果未设置就执行一遍以下代码块 // 如果已设置就表示以下代码块已经运行过一遍了 // 说明1 $wp_did_header = true; // Load the WordPress library. // 说明2 require_once( dirname(__FILE__) . '/wp-load.php' ); // Set up the WordPress query. // 说明3 wp(); // Load the theme template. // 说明4 require_once( ABSPATH . WPINC . '/template-loader.php' ); } |
说明1:对$wp_did_header进行赋值,确保这个代码块只运行一遍
说明2:加载根目录下wp-load.php文件,执行初始化工作,如初始化变量、环境、加载类库和核心代码等等,以搭建WordPress完整环境。例如,载入了wp-includes目录下的functions.php(函数库)、class-wp.php(类库)、plugin-php(插件)、pomo目录(语言包)、query-php(数据请求)、theme.php(主题文件)、post-template.php(文章模板)、comment.php(评论模板)、rewrite.php(URL重写)等等。
说明3:由于载入了wp-includes/functions.php文件,因此调用wp()函数。该函数用于执行内容处理的工作,根据用户的请求调用相关函数获取和处理数据,为前端展示准备数据。
说明4:加载根目录绝对路径下wp-includes目录中的template-loader.php文件,执行主体应用载入的工作,根据用户的请求载入主体模板。
WordPress用这三行代码构建页面:
- wp-load.php完成页面生成所需的所有环境、变量、API等载入的工作;
- wp()函数根据URL请求从数据库中取出相应的数据内容备用;
- template-loader.php把已经准备好的内容主题所设定的样式展示表现出来。
第三步:载入wp-load.php文件(第一清 – 世界的规则)
该文件初始化常量(有:定义绝对路径、设定功能文件及内容文件路径等),同时加载wp-config.php文件,部分核心代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if ( ! defined( 'ABSPATH' ) ) { // 定义常量ABSPATH为根目录绝对地址 define( 'ABSPATH', dirname( __FILE__ ) . '/' ); } ... if ( file_exists( ABSPATH . 'wp-config.php') ) { // 载入根目录wp-config.php文件 /** The config file resides in ABSPATH */ require_once( ABSPATH . 'wp-config.php' ); } else ... // 没有该文件的情况,不做分析 |
本文件主要作用就是载入wp-config.php文件,因此可以“载入wp-config.php”抽象看做wp-load.php初始化的第一个小步骤。
一、载入wp-config.php文件
https://blog.csdn.net/u010822824/article/details/51967906