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:顯示名稱