WordPress 在幕后实际是如何工作的

了解 wordpress 在幕后的工作原理可能很有趣。对于大多数用户来说,这似乎很简单:输入 URL,页面就会快速加载。然而,实际上在后台发生了很多事情。

几年前,当我们第一次开始使用 wordpress 时,我们深入研究了一切是如何运作的。现在,我们在这里以简单的语言与您分享这些知识,以便您更多地了解 wordpress

在本指南中,我们将引导您了解 wordpress 的内部工作原理。我们还创建了一个易于遵循的信息图,以使事情更清晰。

什么是 wordpress

wordpress一个网站构建器和内容管理系统。它是任何人都可以用来创建任何类型的网站的开源软件。

它于 2003 年作为一个博客平台开始,但很快转变为 CMS,后来成为一个成熟的网站建设平台。今天,它为互联网上超过 43% 的网站提供支持

为什么要学习 wordpress 的工作原理?

wordpress一个开源软件,这意味着任何人都可以研究它的代码并为其编写他们的应用程序(插件)和模板(主题)。

多年来,我们看到无数初学者通过简单地学习 wordpress 如何作为软件工作而迅速成为高级用户

它还将教您如何提高 wordpress 性能并为您的项目编写更好的代码

本指南将逐步引导您完成整个过程。我们将在用户请求页面时开始,并在该页面完全加载时结束。

准备?让我们开始吧。

1. 加载 wp-config.php 文件

wp-config.phpwordpress 配置文件。它为 wordpress 网站设置全局变量并包含您的 wordpress 数据库信息。出于显而易见的原因,这是 wordpress 加载的第一个文件

详细了解 wp-config.php 文件以及如何对其进行编辑。

2. 设置认常量

加载 wp-config.php 文件后,wordpress 将继续设置认常量。

包括认 wordpress 上传位置、最大文件大小以及 wp-config.php 文件中设置的其他认常量等信息。

3. 加载 advanced-cache.PHP 文件

如果您的网站上存在 advanced-cache.PHP 文件,则 wordpress 接下来将加载它。

文件充当插入口文件,并被几个流行的插件使用,尤其是 wordpress 缓存插件。如果您的网站使用此文件,您将在插件屏幕上看到一个名为“Drop-ins”的新项目。

4. 加载 wp-content/db.PHP 文件

wordpress 允许开发人员创建自己的数据库抽象层并将它们加载到放置在 wp-content 文件夹中的 db.PHP 文件中。wordpress 缓存插件通常使用它来提高数据库性能

如果您的网站存在此文件,则 wordpress 将加载它。

5. 连接 MysqL 并选择数据库

wordpress 现在有足够的信息来进一步进行。它将连接到 MysqL 服务器并选择数据库

如果 wordpress 无法连接到数据库,您将看到 “Error establishing database connection” 错误,并且 wordpress 将在此处退出

如果一切正常,那么它将继续进行下一步。

6. 加载 object-cache.PHP 或 wp-includes/cache.PHP 文件

wordpress 现在将查找 object-cache.PHP 文件。如果它不存在,那么 wordpress 将继续加载 wp-includes/cache.PHP 文件

7. 加载 wp-content/sunrise.PHP 文件

如果它是一个站点网络,那么 wordpress 将查找 sunrise.PHP 文件(如果它存在于 wp-content 文件夹中)。

8. 加载本地化库

wordpress 现在将在 wp-includes 文件夹中加载 l10n.PHP 库。此文件加载 wordpress 本地化系统、加载翻译、设置区域设置等。

9. 加载多站点插件

如果它是一个站点网络,那么 wordpress 将加载多站点插件

10. 执行 Action 'muplugins_loaded'

该操作muplugins_loaded现在由 wordpress 运行。此操作仅适用于 wordpress站点上的网络激活插件

11. 加载活动插件

wordpress 现在将加载网站上的所有活动插件。它通过查看 wordpress 数据库选项表中的 active_plugins 条目来实现这一点。这允许 wordpress 忽略您网站上已安装但未激活的插件

12. 加载 pluggable.PHP 文件

pluggable.PHP 文件包含可由 wordpress 插件重新定义的函数

wordpress 现在将查看另一个插件是否已经定义了此文件中的函数。否则,它将自己定义这些函数

13. 执行 Action 'plugins_loaded'

wordpress 现在将运行操作 'plugins_loaded'。

它允许开发人员挂接他们的函数,以便在加载所有活动插件后运行。

14. 加载重写规则

wordpress 现在将加载重写规则。这些重写规则帮助 wordpress 使用对 SEO 友好的 URL。

15. 实例化 $wp_query、$wp_rewrite $wp

此时,wordpress 会加载以下对象:

$wp_query:保存类的全局实例WP_Query。它告诉 wordpress 以典型的 wordpress 查询格式请求哪些内容

$wp_rewrite 中:保存 WP_Rewrite 类的全局实例。它包含您的重写规则和函数,这些规则和函数告诉 wordpress 使用哪个 URL 来显示请求的内容

$wp:WP 类的全局实例包含将解析您的请求并执行主查询函数

16. 执行 Action 'setup_theme'

wordpress 现在将继续运行“setup_theme”操作。此操作在加载 wordpress 主题之前运行。

17. 加载子主题的 functions.PHP 文件

functions.PHP 文件充当插件,在 wordpress 主题中用于向您的网站添加特定于主题功能。如果您使用的是子主题,则 wordpress 现在将加载子主题的 functions.PHP 文件

否则,它将继续加载您当前活动主题的 functions.PHP 文件

18. 加载父主题的 functions.PHP 文件

如果您使用的是子主题,则 wordpress 现在将加载父主题的 functions.PHP 文件

19. 执行 Action 'after_setup_theme'

此操作在 wordpress 设置主题并加载主题函数后运行。这是主题可用的第一个操作。

20. 设置当前用户对象

此时,wordpress 会加载当前 user 对象。它允许 wordpress 根据用户的角色和能力管理请求。

21. 执行 Action 'init'

到目前为止,wordpress 已经加载了它需要的所有关键信息。现在,它会触发 'init' 操作。此操作还会注册核心中可用的块或由该网站上安装的任何插件提供的块。

此操作使开发人员能够添加需要在 wordpress 加载所有前面提到的信息后执行代码

22. 执行 “widget_init” 动作

该操作允许开发人员注册 widget 并运行他们此时需要运行的代码。widget_init

23. 运行 wp()

wordpress 现在调用位于文件中的函数。它设置 wordpress 查询全局变量 $wp、$wp_query、$wp_the_query,然后调用 $wp->main。wp()wp-includes/functions.PHP

24. 解析请求

现在 wordpress 拥有解析用户请求所需的所有信息。它首先检查 rewrite 规则以匹配用户的请求。

然后,它运行查询变量筛选条件,请求操作挂钩,并发送标头请求。

25. 运行查询

如果没有内容查询匹配,则 wordpress 将设置 is_404 变量。

否则,wordpress 将继续加载查询变量。

然后它将运行 WP_Query->get_posts()。

接下来,它DO_ACTION_REF_ARRAY对象触发 'pre_get_posts' 动作WP_Query。

wordpress 现在将运行 apply_filters 来清理查询并运行一些最终检查。

现在,它从数据库获取帖子并应用 posts_results 和 the_posts 过滤器。

查询部分以 wordpress 返回帖子结束。

26. 执行 template_redirect

wordpress 现在将运行该操作。这个钩子在 wordpress 确定要加载的模板页面之前运行。template_redirect

27. 加载源模板

如果请求的内容是 RSS 源,则 wordpress 会加载源模板。

28. 加载模板

wordpress 现在将根据 wordpress 模板层次结构查找模板文件。然后,它会加载模板,该模板通常包含一个 wordpress 循环。

29. 执行操作 'shutdown'

在结束所有 PHP 执行之前,wordpress 会触发最后一个名为 shutdown 的操作。

wordpress 在这里停止工作。它已运行代码生成用户请求的网页。

现在,您的网络托管服务器通过向用户发送 wordpress 生成的网页来回复用户的请求。

页面包含 HTML、CSS 和 Javascript 代码,这些代码告诉用户的浏览器如何在屏幕上显示它。

太神奇了,不是吗?所有这些事情都在几毫秒内发生。如果您使用的是这些最好的 wordpress 托管服务之一,您的页面将理想地在几秒钟内加载。

我们希望本文能帮助您了解 wordpress 在幕后是如何工作的。

相关文章

我们有时候在定制WORDPRESS主题的时候,由于菜单样式的要求我...
很多朋友在做wordpree主题制作的时候会经常遇到一个问题,那...
wordpress后台的模块很多,但并不是每个都经常用到。介绍几段...
从WordPress4.2版本开始,如果我们在MYSQL5.1版本数据中导出...
很多网友会遇到这样一个问题,就是WordPress网站上传图片、附...
对于经常要在文章中出现代码的IT相关博客,安装一个代码高亮...