什么是 WordPress?
WordPress 是一个网站构建器和内容管理系统。它是开源软件,任何人都可以使用它来创建任何类型的网站。它于 2003 年作为博客平台开始,但很快转变为 CMS,并后成为一个完整的网站构建平台。如今,WordPress 支持了互联网上超过 43% 的网站。
为什么你应该了解 WordPress 的工作原理?
WordPress 是一个开源软件,任何人都可以学习其代码,并为其编写应用程序(插件)和模板(主题)。多年来,我们见过无数初学者通过简单地学习 WordPress 作为软件的工作原理,很快成为高级用户。了解这些还可以帮助你改进 WordPress 性能并为你的项目编写更好的代码。
WordPress 的工作步骤
1. 加载 wp-config.php 文件
wp-config.php 是 WordPress 的配置文件。它为 WordPress 站点设置全局变量,并包含你的 WordPress 数据库信息。因此,这是 WordPress 加载的第一个文件。
2. 设置默认常量
在加载 wp-config.php 文件之后,WordPress 将继续设置默认常量。这包括像默认的 WordPress 上传位置,最大文件大小和其他在 wp-config.php 文件中设置的默认常量。
3. 加载 advanced-cache.php 文件
如果你的站点上存在 advanced-cache.php 文件,那么 WordPress 将接下来加载它。这个文件作为一个插入文件,由几个流行的插件,特别是 WordPress 缓存插件使用。
4. 加载 wp-content/db.php 文件
WordPress 允许开发人员创建自己的数据库抽象层,并将其加载到 wp-content 文件夹中的 db.php 文件中。WordPress 缓存插件通常使用它来提高数据库性能。如果存在此文件,那么 WordPress 将加载它。
5. 连接 MySQL 和选择数据库
现在,WordPress 已经有足够的信息来继续操作。它将连接到 MySQL 服务器并选择数据库。如果没有连接到数据库,你将看到“建立数据库连接错误”信息,并且 WordPress 将在此停止。
6. 加载 object-cache.php 或 wp-includes/cache.php 文件
WordPress 将查找 object-cache.php 文件。如果不存在,则 WordPress 将加载 wp-includes/cache.php 文件。
7. 加载 wp-content/sunrise.php 文件
如果是多站点网络,那么 WordPress 将在 wp-content 文件夹中查找 sunrise.php 文件。
8. 加载本地化库
WordPress 将加载位于 wp-includes 文件夹中的 l10n.php 库。这个文件加载 WordPress 本地化系统,加载翻译,设置语言环境等。
9. 加载多站点插件
如果是多站点网络,那么 WordPress 将加载多站点插件。
10. 执行 ‘muplugins_loaded’ 动作
WordPress 现在运行 ‘muplugins_loaded’ 动作。此动作仅适用于在 WordPress 多站点上启用的网络插件。
11. 加载已启用插件
WordPress 将加载站点上所有启用的插件。它通过查找 WordPress 数据库选项表中的 active_plugins 条目来完成此操作。
12. 加载 pluggable.php 文件
pluggable.php 文件包含可以被 WordPress 插件重新定义的函数。WordPress 将检查是否已有其他插件定义了文件中的函数,未定义时则由 WordPress 自己定义。
13. 执行 ‘plugins_loaded’ 动作
WordPress 现在运行 ‘plugins_loaded’ 动作。此动作允许开发者在加载所有活动插件后运行他们的自定义函数。
14. 加载重写规则
WordPress 将加载重写规则,这些重写规则帮助 WordPress 使用 SEO 友好的 URL。
15. 实例化 $wp_query, $wp_rewrite, $wp
此时,WordPress 加载以下对象:$wp_query、$wp_rewrite 和 $wp。它们分别处理查询内容、重写规则和解析用户请求。
16. 执行 ‘setup_theme’ 动作
WordPress 现在运行 ‘setup_theme’ 动作。此动作在加载 WordPress 主题之前运行。
17. 加载子主题的 functions.php 文件
functions.php 文件作为插件使用,用于在 WordPress 主题中添加特定于主题的功能。如果使用子主题,WordPress 将加载子主题的 functions.php 文件,否则加载当前激活主题的 functions.php 文件。
18. 加载父主题的 functions.php 文件
如果使用子主题,WordPress 将加载父主题的 functions.php 文件。
19. 执行 ‘after_setup_theme’ 动作
在 WordPress 设置主题并加载主题函数后,运行 ‘after_setup_theme’ 动作。此动作是可用于主题的第一个动作。
20. 设置当前用户对象
此时,WordPress 加载当前用户对象,根据用户的角色和权限管理请求。
21. 执行 ‘init’ 动作
WordPress 加载完所有重要信息后,运行 ‘init’ 动作。此动作注册核心或插件提供的区块。
22. 执行 ‘widget_init’ 动作
‘widget_init’ 动作允许开发者注册小部件并在此时运行所需的代码。
23. 运行 wp() 函数
WordPress 现在调用位于 wp-includes/functions.php 文件中的 wp() 函数。它会设置 WordPress 查询全局变量并调用 $wp->main。
24. 解析请求
WordPress 开始解析用户请求。它先检查重写规则以匹配用户请求,然后运行查询变量过滤器,请求动作钩子并发送头请求。
25. 运行查询
如果没有内容匹配查询,WordPress 将设置 is_404 变量。否则,继续加载查询变量,运行 WP_Query->get_posts() 并应用过滤器清理查询。然后从数据库中提取帖子并返回。
26. 执行 ‘template_redirect’ 动作
WordPress 运行 ‘template_redirect’ 动作,此钩子在确定加载哪个模板页面前运行。
27. 加载订阅源模板
如果请求的内容是 RSS 订阅源,WordPress 将加载订阅源模板。
28. 加载模板
WordPress 根据模板层级查找模板文件并加载它,其中通常包含 WordPress 循环。
29. 执行 ‘shutdown’ 动作
在结束所有 PHP 执行之前,WordPress 运行最后一个动作 ‘shutdown’。此时,WordPress 停止工作,生成用户请求的网页。然后你的网络托管服务器回复用户请求并发送生成的网页,包括 HTML、CSS 和 Javascript 代码,指示用户浏览器如何显示。
惊人的是,这些过程都在毫秒内发生。如果使用最佳的 WordPress 托管服务,你的页面理想情况下会在几秒钟内加载。
希望这篇文章帮你了解 WordPress 如何在后台工作。你可能还想查看保护 WordPress 管理区域的技巧或这篇包含实用 WordPress 提示、技巧和黑客的指南。