WordPress使用MySQL資料庫,想成為一個開發者,我們必須掌握WordPress資料庫的基本結構,并在自己的插件或主題中使用他們,寫入或讀出資料,
1、截至WordPress4.52版本,WordPress一共有以下12個表,這里加上了默認的表前綴 wp_
- ◆ wp_commentmeta:存盤評論的元資料
- ◆ wp_comments:存盤評論
- ◆ wp_links:存盤友情鏈接
- ◆ wp_options:存盤WordPress系統選項和插件、主題配置
- ◆ wp_postmeta:存盤文章(包括頁面、上傳檔案、修訂)的元資料
- ◆ wp_posts:存盤文章(包括頁面、上傳檔案、修訂)
- ◆ wp_terms:存盤每個目錄、標簽
- ◆ wp_termmeta:存盤每個目錄、標簽的ID,key,value
- ◆ wp_term_relationships:存盤每個文章、鏈接和對應分類的關系
- ◆ wp_term_taxonomy:存盤每個目錄、標簽所對應的分類
- ◆ wp_usermeta:存盤用戶的元資料
- ◆ wp_users:存盤用戶
2、下面我們再詳細了解各個表中的子項
wp_categories: 用于保存分類相關資訊的表,包括了5個欄位,分別是:
- ■ cat_ID – 每個分類唯一的ID號,為一個bigint(20)值,且帶有附加屬性auto_increment,
- ■ cat_name – 某個分類的名稱,為一個varchar(55)值,
- ■ category_nicename – 指定給分類的一個便于記住的名字,也就是所謂的slug,這是一個varchar(200)值,
- ■ category_description – 某個分類的詳細說明,longtext型值,
- ■ category_parent – 分類的上級分類,為一個int(4)值,對應是的當前表中的cat_ID,即wp_categories.cat_ID,無上級分類時,這個值為0,
wp_comments: 用于保存評論資訊的表,包括了15個欄位,分別為:
- ◆ comment_ID – 每個評論的唯一ID號,是一個bigint(20)值,帶有附加屬性auto_increment,
- ◆ comment_post_ID – 每個評論對應的文章的ID號,int(11)值,等同于wp_posts.ID,
- ◆ comment_author – 每個評論的評論者名稱,tinytext值,
- ◆ comment_author_email – 每個評論的評論者電郵地址,varchar(100)值,
- ◆ comment_author_url – 每個評論的評論者網址,varchar(200)值,
- ◆ comment_author_IP – 每個評論的評論者的IP地址,varchar(100)值,
- ◆ comment_date – 每個評論發表的時間,datetime值(是加上時區偏移量后的值),
- ◆ comment_date_gmt – 每個評論發表的時間,datetime值(是標準的格林尼治時間),
- ◆ comment_content – 每個評論的具體內容,text值,
- ◆ comment_karma – 不詳,int(11)值,默認為0,
- ◆ comment_approved – 每個評論的當前狀態,為一個列舉值enum(’0′,’1′,’spam’),0為等待審核,1為允許發布,spam為垃圾評論,默認值為1,
- ◆ comment_agent – 每個評論的評論者的客戶端資訊,varchar(255)值,主要包括其瀏覽器和作業系統的型別、版本等資料,
- ◆ comment_type – 不詳,varchar(20)值,
- ◆ comment_parent – 某一評論的上級評論,int(11)值,對應wp_comment.ID,默認為0,即無上級評論,
- ◆ user_id – 某一評論對應的用戶ID,只有當用戶注冊后才會生成,int(11)值,對應wp_users.ID,未注冊的用戶,即外部評論者,這個ID的值為0,
wp_linkcategories: 用于保存在WP后臺中添加的鏈接的相關資訊的表,包括13個欄位:
- ■ cat_id – 每個鏈接分類的唯一ID,bigint(20)值,為一個自增量auto_increment,
- ■ cat_name – 每個鏈接分類的名字,tinytext值,
- ■ auto_toggle -這個欄位所包含的是一個比較特別的屬性,如果為Y,則當該分類中加入了新鏈接時,其它的鏈接會變為不可見,它是一個列舉型的值enum(’Y’,’N’),默認為N,
- ■ show_images – 該欄位也是列舉值enum(’Y’,’N’),默認為Y,用戶指定是否允許在該鏈接分類顯示圖片鏈接,
- ■ show_description – 該欄位指定相應的鏈接分類下的鏈接,是否再專門[換行]顯示它們的說明,這是一個列舉型值enum(’Y’,’N’),默認為N,即不顯示說明(但會通過title屬性中顯示說明),
- ■ show_rating – 顯示該分類下鏈接的等級,它也是一個列舉值enum(’Y’,’N’),默認為Y,此時,你可以用鏈接等級的方式來對該鏈接分類下的鏈接進行排序,
- ■ show_updated – 指定該鏈接分類有更新是,是否進行顯示,列舉值enum(’Y’,’N’),默認為Y,
- ■ sort_order – 指定該鏈接分類中鏈接的排序依據,varchar(64)值,一般用鏈接的名字(name,即wp_links.link_name)或ID(id,即wp_links.link_id),
- ■ sort_desc – 指定鏈接分類的排序方式,列舉值enum(’Y’,’N’),默認為N,即用降序,
- ■ text_before_link – 該鏈接分類下每個鏈接的前置html文本,varchar(128)值,默認是’串列開始標簽’,
- ■ text_after_link – 該鏈接分類下每個鏈接的中,鏈接與說明文字(wp_links.link_description)之間的html文本,varchar(128)值,默認是’換行標簽’,
- ■ text_after_all – 該鏈接分類下每個鏈接的后置html文本,varchar(128)值,默認是’串列結束標簽’,
- ■ list_limit – 用于規定某一鏈接分類中顯示的(可設定的?)鏈接的個數,int(11)值,默認為-1,即對鏈接分類下鏈接的個數無限制,
wp_links :用于保存用戶輸入到Wordpress中的鏈接(通過Link Manager)的表,共14個欄位:
- ◆ link_id – 每個鏈接的唯一ID號,bigint(20)值,附加屬性為auto_increment,
- ◆ link_url – 每個鏈接的URL地址,varchar(255)值,形式為http://開頭的地址,
- ◆ link_name – 單個鏈接的名字,varchar(255)值,
- ◆ link_image – 鏈接可以被定義為使用圖片鏈接,這個欄位用于保存該圖片的地址,為varchar(255)值,
- ◆ link_target – 鏈接打開的方式,有三種,_blank為以新視窗打開,_top為就在本視窗中打開并在最上一級,none為不選擇,會在本視窗中打開,這個欄位是varchar(25)值,
- ◆ link_category – 某個鏈接對應的鏈接分類,為int(11)值,相當于wp_linkcategories.cat_id,
- ◆ link_description – 鏈接的說明文字,用戶可以選擇顯示在鏈接下方還是顯示在title屬性中,varchar(255)值,
- ◆ link_visible – 該鏈接是否可以,列舉enum(’Y’,’N’)值,默認為Y,即可見,
- ◆ link_owner – 某個鏈接的創建人,為一int(11)值,默認是1,(應該對應的就是wp_users.ID)
- ◆ link_rating – 鏈接的等級,int(11)值,默認為0,
- ◆ link_updated – 鏈接被定義、修改的時間,datetime值,
- ◆ link_rel – 鏈接與定義者的關系,由XFN Creator設定,varchar(255)值,
- ◆ vlink_notes – 鏈接的詳細說明,mediumtext值,
- ◆ link_rss – 該鏈接的RSS地址,varchar(255)值,
wp_options: 用于保存Wordpress相關設定、引數的表,共11個欄位,最重要是的option_value欄位,里面包括了大量的重要資訊,
- ■ option_id – 選項的ID,bigint(20)值,附加auto_increment屬性,
- ■ blog_id – 不詳,或許用在單在用戶的WP版本上并不重要吧,或許是針對不同用戶的Blog來設定的一個值,int(11)值,默認為0,即當前blog,
- ■ option_name – 選項名稱,varchar(64)值,
- ■ option_can_override – 該選項是否可被重寫、更新,列舉enum(’Y’,’N’)值,默認為Y,即可被重寫、更新,
- ■ option_type – 選項的型別,作用不詳,int(11)值,默認為1,
- ■ option_value – 選項的值,longtext值,這個欄位的內容比較重要,Wordpress初始化時就會設定好約70個默認的值,這里暫不介紹,
- ■ option_width – 選項的寬(?),作用不詳,int(11)值,默認為20,
- ■ option_height – 選項的高(?),作用不詳,int(11)值,默認為8,
- ■ option_description – 針對某個選項的說明,tinytext值,
- ■ option_admin_level – 設定某個選項可被操縱的用戶等級(詳情見我的相關文章),int(11)值,默認為1,
- ■ autoload – 選項是否每次都被自動加載,列舉enum(’yes’,’no’)值,默認為yes,
wp_postmeta: 用于保存文章的元資訊(meta)的表,四個欄位:
- ◆ meta_id – 元資訊ID,bigint(20)值,附加屬性為auto_increment,
- ◆ post_id – 文章ID,bigint(20)值,相當于wp_posts.ID,
- ◆ meta_key – 元資訊的關鍵字,varchar(255)值,
- ◆ meta_value – 元資訊的值,text值,這些內容主要是在文章及頁面編輯頁(Write Post, Write Page)的”Add a new custom field to this post(page):”下進行設定的,meta_key就對應名為”key”的下拉串列中的項,而值由用戶自己填上(某些時候,wp也會自動加入,如文章中有的音頻媒體),
wp_posts: 用于保存你所有的文章(posts)的相關資訊的表,非常的重要,一般來講,它存盤的資料是最多的,一共包括了21個欄位,
- ■ ID – 每篇文章的唯一ID,bigint(20)值,附加屬性auto_increment,
- ■ post_author – 每篇文章的作者的編號,int(4)值,應該對應的是wp_users.ID,
- ■ post_date – 每篇文章發表的時間,datetime值,它是GMT時間加上時區偏移量的結果,
- ■ post_date_gmt – 每篇文章發表時的GMT(格林威治)時間,datetime值,
- ■ post_content – 每篇文章的具體內容,longtext值,你在后臺文章編輯頁面中寫入的所有內容都放在這里,
- ■ post_title – 文章的標題,text值,
- ■ post_category – 文章所屬分類,int(4)值,
- ■ post_excerpt – 文章摘要,text值,
- ■ post_status – 文章當前的狀態,列舉enum(’publish’,’draft’,’private’,’static’,’object’)值,publish為已發表,draft為草稿,private為私人內容(不會被公開) ,static(不詳),object(不詳),默認為publish,
- ■ comment_status – 評論設定的狀態,也是列舉enum(’open’,’closed’,’registered_only’)值,open為允許評論,closed為不允許評論,registered_only為只有注冊用戶方可評論,默認為open,即人人都可以評論,
- ■ ping_status – ping狀態,列舉enum(’open’,’closed’)值,open指打開pingback功能,closed為關閉,默認值是open,
- ■ post_password – 文章密碼,varchar(20)值,文章編輯才可為文章設定一個密碼,憑這個密碼才能對文章進行重新強加或修改,
- ■ post_name – 文章名,varchar(200)值,這通常是用在生成permalink時,標識某篇文章的一段文本或數字,也即post slug,
- ■ to_ping – 強制該文章去ping某個URI,text值,
- ■ pinged – 該文章被pingback的歷史記錄,text值,為一個個的URI,
- ■ post_modified – 文章最后修改的時間,datetime值,它是GMT時間加上時區偏移量的結果,
- ■ post_modified_gmt – 文章最后修改的GMT時間,datetime值,
- ■ post_content_filtered – 不詳,text值,
- ■ post_parent – 文章的上級文章的ID,int(11)值,對應的是wp_posts.ID,默認為0,即沒有上級文章,
- ■ guid – 這是每篇文章的一個地址,varchar(255)值,默認是這樣的形式: http://your.blog.site/?p=1,如果你形成permalink功能,則通常會是: 你的Wordpress站點地址+文章名,
- ■ menu_order – 不詳,int(11)值,默認為0,
- ■ post_type – 文章型別,具體不詳,varchar(100)值,默認為0,
- ■ post_mime_type – 不詳,varchar(100)值,
- ■ comment_count – 評論計數,具體用途不詳,bigint(20)值,
wp_usermeta : 用于保存用戶元資訊(meta)的表,共4個欄位:
- ◆ umeta_id – 元資訊ID,bigint(20)值,附加屬性auto_increment,
- ◆ user_id – 元資訊對應的用戶ID,bigint(20)值,相當于wp_users.ID,
- ◆ meta_key – 元資訊關鍵字,varchar(255)值,
- ◆ meta_value – 元資訊的詳細值,longtext值,
wp_users:用于保存Wordpress使用者的相關資訊的表,
- ■ ID – 用戶唯一ID,bigint(20)值,帶附加屬性auto_increment,
- ■ user_login – 用戶的注冊名稱,varchar(60)值,
- ■ user_pass – 用戶密碼,varchar(64)值,這是經過加密的結果,好象用的是不可逆的MD5演算法,
- ■ user_nicename – 用戶昵稱,varchar(50)值,
- ■ user_email – 用戶電郵地址,varchar(100)值,
- ■ user_url – 用戶網址,varchar(100)值,
- ■ user_registered – 用戶注冊時間,datetime值,
- ■ user_level – 用于等級,int(2)值,可以是0-10之間的數字,不同等級有不同的對WP的操作權限,
- ■ user_activation_key – 用戶激活碼,不詳,varchar(60)值,
- ■ user_status – 用戶狀態,int(11)值,默認為0,
- ■ display_name – 來前臺顯示出來的用戶名字,varchar(250)值,
在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記錄了每個文章(或鏈接)所對應的分類方法,
參考原文文章:
? WP-Optimize你的wordpress資料庫優化保姆
? Windows 服務器最傻瓜的Apache+PHP+mysql( APM 環境)ComsenzEXP安裝圖文教程
? 用Bootstrap選單樣式替換你的Wordpress選單
? WordPress升級遇到Briefly unavailable for scheduled maintenance解決辦法
? Wordpress隱藏顯示側邊欄
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/93083.html
標籤:其他
