开发人员开始与WordPress (或其他任何其他CMS或Web框架)一起工作时,要学习的最重要的知识之一就是它如何在引擎盖下工作。在WordPress的情况下,我们必须了解WordPress页面生命周期。
对于那些通常使用其他框架构建Web应用程序的人,页面请求生命周期的概念已经很熟悉。但是,当涉及到WordPress时,存在一些差异。 WordPress动作和过滤器模型最终可能会使某些来自其他背景的人感到困惑
本文的目的是让您注意这个非常重要的主题,因为对此的理解将有助于知道何时正确包含各种WordPress挂钩和过滤器,如何在典型的WordPress请求中涉及的不同文件如何交互彼此之间,以及如何查询数据并渲染到浏览器。
引擎盖下的WordPress
下面有一个图像,可以轻松说明“ WordPress Core认为” 发生。
图像学分: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。
随时发表评论或包括我可能忘记的一些重要信息!