WordPress 使用 MySQL 數據庫。作為一個開發者,我們有必要掌握 WordPress 數據庫的基本構造,並在自己的插件或主題中使用他們。
截至 WordPress3.0,WordPress 一共有以下 11 個表。這裏加上了默認的表前綴 wp_ 。
wp_commentmeta:存儲評論的元數據
wp_comments:存儲評論
wp_links:存儲友情鏈接 (Blogroll)
wp_options:存儲 WordPress 系統選項和插件、主題配置
wp_postmeta:存儲文章 (包括頁面、上傳文件、修訂) 的元數據
wp_posts:存儲文章 (包括頁面、上傳文件、修訂)
wp_terms:存儲每個目錄、標籤
wp_term_relationships:存儲每個文章、鏈接和對應分類的關係
wp_term_taxonomy:存儲每個目錄、標籤所對應的分類
wp_usermeta:存儲用户的元數據
wp_users:存儲用户
在 WordPress 的數據庫結構中,存儲系統選項和插件配置的 wp_options 表是比較獨立的結構,在後文中會提到,它採用了 key-value 模式存儲,這樣做的好處是易於拓展,各個插件都可以輕鬆地在這裏存儲自己的配置。
post,comment,user 則是三個基本表加上拓展表的組合。以 wp_users 為例,wp_users 已經存儲了每個用户會用到的基本信息,比如 login_name 、 display_name 、 password 、 email 等常用信息,但如果我們還要存儲一些不常用的數據,最好的做法不是去在表後加上一列,去破壞默認的表結構,而是將數據存在 wp_usermeta 中。 wp_usermeta 這個拓展表和 wp_options 表有類似的結構,我們可以在這裏存儲每個用户的 QQ 號碼、手機號碼、 登錄 WordPress 後台的主題選項等等。
比較難以理解的是 term,即 wp_terms 、 wp_term_relationships 、 wp_term_taxonomy 。在 WordPress 的系統裏,我們常見的分類有文章的分類、鏈接的分類,實際上還有 TAG,它也是一種特殊的分類方式,我們甚至還可以創建自己的分類方法。 WordPress 將所有的分類及分類方法、對應結構都記錄在這三個表中。 wp_terms 記錄了每個分類的名字以及基本信息,如本站分為 「WordPress 開發」 、 「WPCEO 插件」 等,這裏的分類指廣義上的分類,所以每個 TAG 也是一個 「分類」 。 wp_term_taxonomy 記錄 了每個分類所歸屬的分類方法,如 「WordPress 開發」 、 「WPCEO 插件」 是文章分類 (category),放置友情鏈接的 「我的朋友」 、 「我的同 事」 分類屬於友情鏈接分類 (link_category) 。 wp_term_relationships 記錄了每個文章 (或鏈接) 所對應的分類方法。
慶幸的是,關於 term 的使用,WordPress 中相關函數的使用方法還是比較清晰明瞭,我們就沒必要糾結於它的構造了。
在上文中我們已經介紹了 WordPress 數據庫中各個表的作用,本文將繼續介紹每個表中每個列的作用。 WordPress 官方文檔已經有比較詳細的表格,本文僅對常用數據進行介紹。
wp_commentmeta
meta_id:自增唯一 ID
comment_id:對應評論 ID
meta_key:鍵名
meta_value:鍵值
wp_comments
comment_ID:自增唯一 ID
comment_post_ID:對應文章 ID
comment_author:評論者
comment_author_email:評論者郵箱
comment_author_url:評論者網址
comment_author_IP:評論者 IP
comment_date:評論時間
comment_date_gmt:評論時間 (GMT+0 時間)
comment_content:評論正文
comment_karma:未知
comment_approved:評論是否被批准
comment_agent:評論者的 USER AGENT
comment_type:評論類型 (pingback/普通)
comment_parent:父評論 ID
user_id:評論者用户 ID(不一定存在)
wp_links
link_id:自增唯一 ID
link_url:鏈接 URL
link_name:鏈接標題
link_image:鏈接圖片
link_target:鏈接打開方式
link_description:鏈接描述
link_visible:是否可見 (Y/N)
link_owner:添加者用户 ID
link_rating:評分等級
link_updated:未知
link_rel:XFN 關係
link_notes:XFN 註釋
link_rss:鏈接 RSS 地址
wp_options
option_id:自增唯一 ID
blog_id:博客 ID,用於多用户博客,默認 0
option_name:鍵名
option_value:鍵值
autoload:在 WordPress 載入時自動載入 (yes/no)
wp_postmeta
meta_id:自增唯一 ID
post_id:對應文章 ID
meta_key:鍵名
meta_value:鍵值
wp_posts
ID:自增唯一 ID
post_author:對應作者 ID
post_date:發佈時間
post_date_gmt:發佈時間 (GMT+0 時間)
post_content:正文
post_title:標題
post_excerpt:摘錄
post_status:文章狀態 (publish/auto-draft/inherit 等)
comment_status:評論狀態 (open/closed)
ping_status:PING 狀態 (open/closed)
post_password:文章密碼
post_name:文章縮略名
to_ping:未知
pinged:已經 PING 過的鏈接
post_modified:修改時間
post_modified_gmt:修改時間 (GMT+0 時間)
post_content_filtered:未知
post_parent:父文章,主要用於 PAGE
guid:未知
menu_order:排序 ID
post_type:文章類型 (post/page 等)
post_mime_type:MIME 類型
comment_count:評論總數
wp_terms
term_id:分類 ID
name:分類名
slug:縮略名
term_group:未知
wp_term_relationships
object_id:對應文章 ID/鏈接 ID
term_taxonomy_id:對應分類方法 ID
term_order:排序
wp_term_taxonomy
term_taxonomy_id:分類方法 ID
term_id:taxonomy:分類方法 (category/post_tag)
description:未知
parent:所屬父分類方法 ID
count:文章數統計
wp_usermeta
umeta_id:自增唯一 ID
user_id:對應用户 ID
meta_key:鍵名
meta_value:鍵值
wp_users
ID:自增唯一 ID
user_login:登錄名
user_pass:密碼
user_nicename:暱稱
user_email:Email
user_url:網址
user_registered:註冊時間
user_activation_key:激活碼
user_status:用户狀態
display_name:顯示名稱