第一个当然是介绍 index.php
,WordPress 根目录下面的 index.php
是 WordPress 的最重要的一个文件,根据基本的 htaccess 规则:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
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
*/
大概意思就是:index.php
是 WordPress 程序的前端,这个文件不干任何别的事情,只加载 wp-blog-header.php
文件。
index.php
文件本身也非常简洁,只有两行代码:
define('WP_USE_THEMES', true);
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 解析,业务的处理以及最后模板的加载。