每天一个WordPress文件:index.php

第一个当然是介绍 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 解析,业务的处理以及最后模板的加载。

标签:

热门文章