index.php 文件是 WordPress 的唯一入口,如果访问 WordPress 博客的某个链接,没有对应的文件,则都让 index.php 来处理,所以可以说 index.php 是 WordPress 的唯一入口,该文件前面的注释,也符合这个意思。
/**
* Front to the WordPress application. This file doesn't do anything, but loads
* wp-blog-header.php which does and tells WordPress to load the theme.
*
* @package WordPress
*/
/**
* Tells WordPress to load the WordPress theme and output it.
*
* @var bool
*/
大概意思就是:index.php 文件是 WordPress 应用程序的前端,这个文件不干任何别的事情,只加载 wp-blog-header.php 文件和告诉WordPress加载主题。
index.php 文件本身也非常简洁,只有两行代码:
define('WP_USE_THEMES', true);
// 引入wp-blog-header.php文件,加载WordPress环境和模板
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
我们后面再讲 wp-blog-header.php 做什么的。
WP_USE_THEMES 是做什么的
今天注重分析一下常量 WP_USE_THEMES 是做什么的呢?
WP_USE_THEMES 字面意思也能理解,它定义 WordPress 是否使用主题,这里定义为 true;一般我们也不会去改这个东西。
那么这个东西到底有什么用的?你可以测试一下,将它设置成:false,网站打开后就是一片空白,那么设置成 flase 的应用场景在哪里的?
我们来看看,在 WordPress 执行的过程中,哪里用到这个常量,除了在 index.php 入口文件定义了这个常量外,只有在 wp-includes 目录下的 template-loader.php 这个处理模板加载的文件中使用到这个常量。
WordPress 的执行流程大概可以分为三部分:第一步是核心文件的加载,第二步是业务逻辑的执行,第三步是模板的加载渲染,最后输出到浏览器客户端。
第三步模板的加载渲染就是通过调用 template-loader.php 这个文件来执行的,在 template-loader.php 中几乎所有的代码逻辑的执行都是需要判断 WP_USE_THEMES 这个常量的真假,只有为 true 才去执行加载模板的逻辑的。
所以在我们不想使用 WordPress 的模板加载,也就是说不输出模板数据的情况下,只是想输出原始的数据到客户端,比如 API 接口,那我们就可以直接设置这个常量为 false,这样 template-loader.php 中的加载模板的代码都不会执行。
其实从大处看,WordPress也是一个简单的 MVC 架构,它也包含的 URL 解析,业务的处理以及最后模板的加载。