您有沒有想過 wordpress 在幕后實際上是如何工作的?
對于典型用戶來說,這看起來很簡單,因為您輸入 URL,頁面會在幾秒鐘內加載,但幕后發生了很多事情。
在本指南中,我們將引導您了解 wordpress 在幕后的實際工作原理,并且我們還創建了一個易于理解的信息圖。
什么是 WordPress?
WordPress 是一個網站構建器和內容管理系統。它是開源軟件,任何人都可以使用它來制作任何可以想象的網站。
它于 2003 年最初是一個博客平臺,但很快轉變為 CMS,后來又轉變為成熟的網站建設平臺。如今,互聯網上超過 43% 的網站均由它提供支持。
要了解有關其演變、歷史和優缺點的更多信息,您可以查看我們關于什么是 WordPress以及構建 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 文件。
7.加載wp-content/sunrise.php文件
如果是多站點網絡,那么 WordPress 將查找 wp-content 文件夾中存在的 sunrise.php 文件。
8.加載本地化庫
WordPress 現在將加載 wp-includes 文件夾中的 l10n.php 庫。該文件加載 WordPress 本地化系統、加載翻譯、設置區域設置等。
您可以查看我們關于如何使用其他語言的 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文件
function.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-includes/functions.phpfile.?它設置 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.加載提要模板
如果請求的內容是RSS feed,則 WordPress 會加載該 feed 模板。
28.加載模板
WordPress 現在將根據 WordPress 模板層次結構查找模板文件。然后它加載模板,該模板通常包含WordPress 循環。
29.執行“關閉”操作
就在結束所有 PHP 執行之前,WordPress 會觸發名為 shutdown 的最后一個操作。
WordPress 在這里停止工作。它已運行代碼并生成用戶請求的網頁。
現在,您的網絡托管服務器通過向用戶發送由 WordPress 生成的網頁來回復用戶的請求。該頁面包含 html、css 和 JavaScript 代碼,告訴用戶的瀏覽器如何在屏幕上顯示它。
太棒了,不是嗎?所有這些事情都在幾毫秒內發生。如果您使用的是這些最好的 WordPress 托管服務之一,您的頁面理想情況下會在幾秒鐘內加載。
我們希望本文能幫助您了解 WordPress 在幕后的工作原理。您可能還想查看我們有關如何提高 WordPress 速度和性能的分步指南,以及我們專家精選的最佳WordPress 插件來發展您的網站。