WordPress 網站由三個主要元素組成:
- WordPress 安裝本身
- wp-content 目錄的內容,其中包括主題、插件和上傳內容
- 數據庫,存儲所有內容。
大多數 WordPress 用戶從未直接接觸過數據庫,甚至可能不知道它正在不斷地填充他們的網站。當 WordPress 提供任何類型的頁面時,無論是主頁、單個帖子或頁面還是存檔,它都會訪問數據庫以顯示編輯和管理員已添加到網站的內容。
在本系列教程中,我將詳細介紹 WordPress 數據庫的不同方面。該系列將分為九部分,涵蓋以下內容:
- 簡介
- 數據之間的關系
- 內容類型
- 用戶數據
- 元數據
- 分類法、類別、標簽和術語
- 分類法與帖子元數據
- 選項表
- WordPress 多站點數據
在本介紹中,我將概述數據庫表以及它們與您可能習慣在 WordPress 中使用的內容類型的關系,并確定存儲內容的位置。
WordPress 中的內容類型
由于數據庫表是用來存儲內容的,因此在理解它們之前,您需要先了解內容。 WordPress 中有多種類型的內容:
- 帖子
- 頁面
- 自定義帖子類型
- 附件
- 鏈接
- 導航菜單項(存儲為單獨的帖子)
這些內容類型會附加數據:
- 類別
- 標簽
- 自定義分類法和術語
- 發布元數據
除此之外,還有其他類型的內容以不同的方式存儲:
- 小部件
- 選項
- 用戶
- 站點(用于多站點安裝)
- 硬編碼內容(添加到您的主題或插件中)
- 來自其他地方的內容(通過 Feed、流媒體或其他技術訪問的第三方內容)
所有這些類型的內容都存儲在數據庫中的某個位置(或者偶爾存儲在主題或插件文件中,正如我將展示的那樣)。他們可能有自己的條目,也可能是另一個條目的一部分(例如編碼到帖子中的流內容)。它們還可以鏈接到其他表中的數據。例如,有關帖子的數據將鏈接到有關用戶的數據,以便 WordPress 知道誰創作了哪些帖子。
WordPress 數據庫結構
WordPress 使用一系列數據庫表以及它們之間的關系來最大限度地減少必須存儲的數據量 – 這會創建一對多關系。這意味著,一個用戶可以擁有許多與其用戶記錄相關的帖子。它節省了空間 – 如果 WordPress 存儲每個用戶針對其撰寫的每篇帖子的所有用戶數據,這將意味著大量重復數據和大量空間。
下圖取自 WordPress codex,顯示了數據庫表及其鏈接方式:
大多數表格通過一個字段鏈接到一個或多個其他表格。該字段將是每個記錄的唯一標識符,例如 post_id。此表更詳細地顯示了這一點:
表 | 已存儲的數據 | 鏈接到 |
---|---|---|
wp_posts | 帖子、頁面、附件、修訂和導航菜單項 | wp_postmeta(通過 post_id)
wp_term_relationships(通過 post_id) |
wp_postmeta | 每個帖子的元數據 | wp_posts (通過 post_id) |
wp_comments | 評論 | wp_posts (通過 post_id) |
wp_commentmeta | 每條評論的元數據 | wp_comments (通過 comment_id) |
wp_term_relationships | 帖子和分類之間的關系 | wp_posts (通過 post_id)
wp_term_taxonomy (via term_taxonomy_id) |
wp_term_taxonomy | 分類法(包括類別和標簽) | wp_term_relationships (通過 term_taxonomy_id) |
wp_terms | 您的類別和標簽以及分配給自定義分類法的術語 | wp_term_taxonomy (通過 term_id) |
wp_links | 您博客中的鏈接(如果您還有的話) | wp_term_relationships (通過 link_id) |
wp_users | 用戶 | wp_posts (通過 post_author) |
wp_user_meta | 每個用戶的元數據 | wp_users (通過 user_id) |
wp_options | 站點設置和選項(通過“設置”屏幕以及通過插件和主題設置) | 不適用 |
有幾點值得注意:
- 默認情況下,數據庫表具有 wp_ 前綴。您可以在配置網站時更改此設置,但沒有太大價值。
- 核心表是 wp_posts 表,其中將存儲大部分數據。這將(幾乎)其他所有內容結合在一起。
- 只有一張表未附加到任何其他表 – wp_options 表。此表存儲有關網站和 WordPress 安裝的數據,這些數據與有關帖子或用戶的數據無關。
- 兩個表用于存儲有關分類法的數據 – 本系列稍后將更詳細地解釋這些數據。
- wp_users 和 wp_comments 表沒有鏈接 – 盡管可以指定用戶必須注冊才能發表評論,但 WordPress 實際上并不存儲有關評論的數據針對每個發布它們的用戶。
- 多站點安裝將有一些額外的表。我沒有在此處包含這些內容,因為這超出了本教程的范圍。
將內容鏈接到數據庫表
查看了 WordPress 中的內容類型以及用于存儲它們的數據庫表后,將兩者進行匹配可能會有所幫助。下表顯示了使用哪個數據庫表來存儲每種類型的內容。
內容類型 | 表 |
---|---|
帖子 | wp_posts |
頁面 | wp_posts |
自定義帖子類型 | wp_posts |
附件 | wp_posts |
鏈接 | wp_links |
導航菜單項 | wp_posts |
類別 | wp_terms |
標簽 | wp_terms |
自定義分類法 | wp_term_taxonomy |
分類術語 | wp_terms |
發布元數據 | wp_post_meta |
小部件 | wp_options |
選項 | wp_options |
用戶 | wp_users |
硬編碼內容 | wp_posts(如果添加到帖子)
wp_options(如果添加到小部件) 主題和插件文件(如果硬編碼) |
第三方內容 | wp_posts(如果添加到帖子中)
wp_options(如果通過小部件或插件添加) 主題和插件文件(如果硬編碼) |
您可能已經注意到,并非所有數據庫表都包含在該表中。這是因為其中一些用于存儲元數據,另一些用于存儲關系,這兩者將在本系列后面更詳細地介紹。
摘要
希望您現在能夠更好地了解 WordPress 使用數據庫結構存儲不同類型數據的方式和位置。本系列將更詳細地探討此問題的所有方面。
在下一部分中,我將檢查數據之間的關系,并更詳細地了解特定表的鏈接方式以及某些表如何純粹用于存儲有關關系的數據。