在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中相關函數的使用方法還是比較清晰明了,我們就沒必要糾結於它的構造了。
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:顯示名稱
三、Wordpress表按功能分類按照功能大致分為五類 :
① 使用者資訊: wp_users和wp_usermeta
② 連結資訊: wp_links
③ 文章及評論資訊: wp_posts、wp_postmeta、wp_comments、wp_commentmeta
④ 對分類,連結分類,標籤管理: wp_term,wp_term_relationships,wp_term_taxonomy
⑤全域設定資訊: wp_options
(1) wp_posts
部落格發表”文章”存放的地方就是這個wp_posts表了。這個表裡存放的除了普通的文章之外,還有附件和頁面(page)的一些資訊。post_type欄位是用來區分文章類型的。如果post_type是’post’,那麼就是文章,如果是’page’,那麼就是頁面,如果是’attachment’,那麼就是附件了.
(2) wp_postmeta
這個表很簡單,只有 meta_id, post_id, meta_key, meta_value 這四個欄位。post_id 是相關 “文章” 的id。meta_value 是longtext類型的,這裡僅是用來儲存值。在撰寫文章的時候,在編輯框下面有一個 Custom Fields 的選項,我們可以在這裡添加post的meta資訊。
(3) wp_comments
比較重要的兩個欄位是 comment_post_ID 和 comment_approved,前一個用來指示這條評論隸屬於哪一篇文章,後一個用來記錄審核狀況。還有一個比較有意思的是這個 commnet_agent 欄位,可以利用這個欄位來統計一下使用者瀏覽器類型。
(4) wp_commentmeta
現在WordPress 2.9 將要支援評論資料項目(commentmeta)。目前還不確定這一功能有何用途。
(5) wp_users
使用者帳號表。儲存使用者名稱、密碼還有一些使用者的基本資料。
(6) wp_usermeta
類似上面的 wp_postmeta,儲存一些其他的使用者資訊。
(7) wp_options
用來記錄Wordpress的一些設定和選項。裡面有一個blog_id欄位,這個應該是用在MU版裡面來標示不同的 Blog 的。autoload這個欄位用來控制是否選項總是被WordPress或者外掛程式匯入並緩衝來使用,或者是否只是在要求的情況下才被匯入。
(8) wp_links
用來儲存 Blogroll 裡面的連結。
(9) wp_terms
它儲存(term)的基本資料。name 就是 term 的名字,slug 是用於使得 URL 友好化。term_group 是用於把相似的 terms 集合在一起。term_id 是term的唯一ID。
(10) wp_term_taxonomy
分類資訊,是對wp_terms中的資訊的關係資訊補充,有所屬類型(category,link_category,tag),詳細描述所擁有文章(連結)數量。
(11) wp_term_relationships
把posts和links這些對象和term_taxonomy表中的term_taxonomy_id聯絡起來的關係表,object_id是與不同的對象關聯,例如wp_posts中的ID(wp_links中的link_id)等,term_taxonomy_id就是關聯wp_term_taxonomy中的term_taxonomy_id。