引擎盖下的WordPress:请求生命周期
#开源 #php #wordpress

开发人员开始与WordPress (或其他任何其他CMS或Web框架)一起工作时,要学习的最重要的知识之一就是它如何在引擎盖下工作。在WordPress的情况下,我们必须了解WordPress页面生命周期
对于那些通常使用其他框架构建Web应用程序的人,页面请求生命周期的概念已经很熟悉。但是,当涉及到WordPress时,存在一些差异。 WordPress动作和过滤器模型最终可能会使某些来自其他背景的人感到困惑

本文的目的是让您注意这个非常重要的主题,因为对此的理解将有助于知道何时正确包含各种WordPress挂钩和过滤器,如何在典型的WordPress请求中涉及的不同文件如何交互彼此之间,以及如何查询数据并渲染到浏览器。

引擎盖下的WordPress

下面有一个图像,可以轻松说明“ WordPress Core认为” 发生。

WordPress Page Lifecycle

图像学分:Tom MC Farlin

a 简化的简历此“ WordPress思维”将是以下内容:

  • index.php: wordpress前端请求的入口点,每当向任何内容提出请求时,它将运行,而不是在WP-ADMIN目录下;

  • wp_use_themes常数;

  • wp-blog-header.php:是第一个需要的附加文件,并通过需要wp-load.php文件来设置WordPress环境。它还调用WP()函数(保存此信息);

  • wp-load.php:定义了ABSPATH常数,设置了一些error_retport级别,并找到并加载wp-config.php文件或尝试将用户重定向以创建wp-config.php文件(如果不存在);

  • wp-config.php:定义了您的WordPress安装可能需要的DB常量,调试常数和其他常数,还需要WP-Settings.php文件;

  • wp-settings.php文件设置WordPress环境。它做了很多工作,因此有一个特殊列表:

    • 设置版本信息,并需要初始化所需的所有文件;
    • 设置大多数默认常数;
    • 检查维护模式并检查调试模式;
    • 需要核心WordPress功能所需的核心WordPress文件;
    • 设置数据库层和任何全局数据库变量;
    • 如果启用了多站点,请初始化多站点; 如果未安装WordPress,则加载本地化库并运行安装程序
    • 加载所需的任何WordPress文件的其余;
    • 加载任何必使用的插件;
    • 加载任何网络激活的插件(如果安装在多站点上);
    • 设置任何特定的cookie常数或SSL常数,然后包括一个vars.php文件,该文件创建任何常见的全局变量;
    • 调用创建初始分类法和自定义帖子类型的功能:页面和帖子类型;
    • 记录主题目录root;
    • 加载所有活动插件;
    • 负载可插入功能;
    • 定义可能需要的任何其他常数;
    • 调用一个函数,将魔术引号添加到任何获取或发布请求变量并设置请求数组;
    • 创建一个WordPress查询对象的实例,WordPress重写对象,主WordPress对象,窗口小部件出厂对象和用户角色对象;
    • 创建任何与模板相关的常数和任何默认的文本本地化域,创建一个语言环境对象和一个locale Switch对象;
    • 为活动主题加载functions.php文件;
    • 创建WP站点健康对象的实例;
    • 设置当前用户;
    • 检查站点状态;
    • 运行wp_loaded操作钩;
  • wp();函数:WP-settings.php完成其工作后,wp-blog-header.php调用wp()函数。此功能确定需要渲染的内容,并从数据库中获取相关数据;

  • template-loader.php:设置了所有查询数据后,需要模板加载程序。它根据访客的URL找到并加载正确的模板。

我链接了我提到的WordPress核心文件,这些文件都可以在WordPress Core GitHub repository官方上可用,因此您可以直接读取”这些文件并自己理解我尝试恢复的内容。

准时,有关更多信息,我建议您检查WordPress Codex提供的信息以及此惊人的article written by Jonathan Bossenger

随时发表评论或包括我可能忘记的一些重要信息!