你有没有想过如何WordPress实际上在幕后工作? 对于大多数用户来说,看起来很简单,因为您在几秒钟内输入了一个URL并加载了一个页面,但在后台发生了很多事情。 在本指南中,我们将引导您了解WordPress如何在幕后进行实际操作,并且还创建了一个易于跟踪的信息图。
为什么你应该学习WordPress如何工作?
WordPress是一个开源软件,意味着任何人都可以学习它的代码,并为它编写自己的应用程序(插件)和模板(主题)。
了解WordPress如何工作以及幕后发生的事情可以帮助您了解如何使用它。 您可以了解如何提高WordPress的性能,并为自己的项目编写更好的代码。
本指南将逐步介绍整个过程。 我们将从用户请求页面开始,并在页面完全加载时结束。
准备? 让我们开始吧。
您也可以按照下面的书面教程了解更多详情。
1.加载wp-config.php文件
wp-config.php是WordPress的配置文件。 它为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无法连接到数据库,那么您将看到“错误建立数据库连接”错误,WordPress将在这里退出。
如果一切正常,那么它将继续下一步。
6.加载object-cache.php或wp-includes / cache.php文件
WordPress现在将寻找object-cache.php文件。 如果它不存在,那么WordPress将继续加载wp-includes / cache.php文件。
加载wp-content / sunrise.php文件
如果它是一个多站点网络,那么现在WordPress将查找sunrise.php文件,如果它存在于wp-content文件夹中的话。
8.加载本地化库
WordPress现在将加载wp-includes文件夹中的l10n.php库。 这个文件加载WordPress本地化系统,加载翻译,设置区域设置等。
9.加载多站点插件
如果它是一个多站点网络,那么WordPress现在将加载多站点插件。 详细了解如何在WordPress多站点网络上使用插件。
10.做动作’muplugins_loaded’
动作muplugins_loaded现在由WordPress运行。 此操作仅适用于WordPress多站点上的网络激活插件。
11.加载主动插件
WordPress现在将加载网站上的所有活动插件。 它通过查看WordPress数据库的选项表中的active_plugins条目来实现。 这允许WordPress忽略安装在您的网站上但未激活的插件。
12.加载pluggable.php文件
pluggable.php文件包含可以由WordPress插件重新定义的函数。 现在WordPress会看到这个文件里面的函数是否已经被另一个插件定义了。 否则,它将自己定义这些函数。
13.做动作’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.做动作’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设置主题和加载主题函数之后运行。 这是第一个可用于主题的操作。
20.设置当前用户对象
在这一点上,WordPress加载当前的用户对象。 它允许WordPress根据用户的角色和功能来管理请求。
21.执行“init”
到目前为止,WordPress已经加载了所有关键信息。 现在它触发’init’操作。
这个动作允许开发者在WordPress加载了之前提到的所有信息之后添加需要执行的代码。
22.做动作’widget_init’
该 widget_init
动作允许开发人员注册小部件并运行他们需要运行的代码。
23.运行wp()
WordPress现在打电话 WP()
位于的功能 WP-包括/ functions.php的
文件。 它设置WordPress查询全局$ wp,$ wp_query,$ wp_the_query,然后调用$ wp-> main。
24.解析请求
现在,WordPress拥有解析用户请求所需的所有信息。 它首先检查重写规则以匹配用户的请求。
然后运行查询变量过滤器,请求动作钩子,并发送头部请求。
25.运行查询
如果没有内容匹配查询,那么WordPress将设置is_404变量。
否则,WordPress将继续加载查询变量。
然后它将运行WP_Query-> get_posts()。
接下来,它使用WP_Query对象触发DO_ACTION_REF_ARRAY’pre_get_posts’动作。
WordPress现在将运行apply_filters来清理查询并运行一些最终检查。
现在它从数据库中提取帖子并应用posts_results和the_posts过滤器。
查询部分以WordPress返回帖子结束。
26.做动作“template_redirect”
WordPress现在将运行 template_redirect
行动。 这个钩子在WordPress确定要加载哪个模板页面之前运行。
27.加载Feed模板
如果请求的内容是一个RSS提要,那么WordPress会加载这个提要模板。
28.加载模板
现在WordPress会根据WordPress模板层次结构查找模板文件。 然后加载通常包含WordPress循环的模板。
29.行动“关机”
在结束所有PHP执行之前,WordPress会触发最后一个叫做shutdown的动作。
WordPress停止在这里工作。 它运行了代码并生成了用户请求的网页。
现在,您的网站托管服务器通过发送由WordPress生成的网页来回复用户的请求。 此页面包含HTML,CSS和Javascript代码,它告诉用户的浏览器如何在屏幕上显示它。
令人惊讶的是不是? 所有这些事情发生在毫秒之内。 如果您正在使用这些最好的WordPress托管服务之一,那么理想情况下,您的网页将在几秒钟内加载。