IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    每天一个 WordPress 文件:index.php

    Denis发表于 2017-03-22 16:27:33
    love 0

    从今天开始,每天(除了周末)给大家介绍分析一个 WordPress 文件,看看我能坚持多久 🙂

    今天介绍一下 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 解析,业务的处理以及最后模板的加载。

    有问题,哈哈,我博客没有评论系统的,加入我的小密圈来一起探讨吧:

    © 我爱水煮鱼 / RSS 订阅 / 长期承接 WordPress 项目



沪ICP备19023445号-2号
友情链接