WordPress 2.3 版本之前文章只有分類的,2.3 版本之后才增加了標(biāo)簽,所以可以說 WordPress 2.3 引入了新的分類模式,新的模式將取代 categories,post2cat 和 link2cat 這三個(gè)數(shù)據(jù)表,并引進(jìn)三個(gè)新的更靈活的數(shù)據(jù)表:terms,term_taxonomy 和 term_relationships 表 。

文章插圖
terms 表
第一個(gè)是 terms 表,它保存 term 的基本信息 。
term_id bigint(20) unsigned NOT NULL auto_increment, name varchar(200) NOT NULL default , slug varchar(200) NOT NULL default , term_group bigint(10) NOT NULL default 0, PRIMARY KEY (term_id), KEY slug (slug($max_index_length)), KEY name (name($max_index_length))
字段
描述
term_id
term 的唯一 ID
name
term 的名字
slug
用于 URL 中,使得 URL 更加友好
term_group
用于把相似的 terms 集合在一起
term_taxonomy 表
一個(gè) term 不能由它自己決定是 category(分類)還是 tag(標(biāo)簽),它必須通過 term_taxonomy 這個(gè)數(shù)據(jù)表來決定:
term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment, term_id bigint(20) unsigned NOT NULL default 0, taxonomy varchar(32) NOT NULL default , description longtext NOT NULL, parent bigint(20) unsigned NOT NULL default 0, count bigint(20) NOT NULL default 0, PRIMARY KEY (term_taxonomy_id), UNIQUE KEY term_id_taxonomy (term_id,taxonomy), KEY taxonomy (taxonomy)
字段
描述
term_taxonomy_id
term+taxonomy 對(duì)的唯一 ID
term_id
terms 表外鍵 ID
taxonomy
指定了 term 屬于什么分類模式,默認(rèn)的分類模式有 “category”,“l(fā)ink_category” 和 “post_tag” 。
parent
指定 terms 在 taxonomy 中層次關(guān)系
description
指定 term 在 taxonomy 中定義的描述
count
記錄在每個(gè) term+taxonomy 對(duì)中有多個(gè)對(duì)象,比如 taxonomy 為 “category”,則 count 記錄了有多少篇文章在這個(gè)分類中 。
term_relationships 表
最后一個(gè)表 table,term_relationships , 把如 posts 和 links 這些對(duì)象和 term_taxonomy 表中的 term_taxonomy_id 聯(lián)系起來 。
object_id bigint(20) unsigned NOT NULL default 0, term_taxonomy_id bigint(20) unsigned NOT NULL default 0, term_order int(11) NOT NULL default 0, PRIMARY KEY (object_id,term_taxonomy_id), KEY term_taxonomy_id (term_taxonomy_id)
字段
描述
object_id
post 或者 link 的 ID
term_taxonomy_id
來自 term_taxonomy 表的外鍵 ID
term_order
指定了顯示的順序
拆分共享
新的分類模式模式和 Taxonomy API 的靈活性意味著插件能夠能夠非常容易增加新的分類模式和對(duì)象類型,甚至不同的分類模式可以共享 term , WordPress 4.2 之前確實(shí)是這樣做的,支持不同的分類模式共享一個(gè) term,比如同時(shí)有一個(gè)「使用技巧」的標(biāo)簽和分類,他們使用同一個(gè) term 。
但是這樣設(shè)計(jì)很大的問題 , 因?yàn)樵诜诸惥庉嬳撁妫选甘褂眉记伞垢某伞竁P使用技巧」,然后標(biāo)簽「使用技巧」也跟著改了 。
這樣是不是最好的設(shè)計(jì),肯定不是,所以 WordPress 4.2 之后這個(gè)共享機(jī)制就取消了,不允許共享了,現(xiàn)在同時(shí)有一個(gè)「使用技巧」的標(biāo)簽和分類,他們不是同一個(gè) term,會(huì)生成兩個(gè)term 。
所以如果某種程度上說 , term 和 term_taxonomy 表是一一對(duì)應(yīng)了,他們其實(shí)可以合并成一個(gè)表,但是 WordPress 為了考慮兼容問題就保留下來,看看 WordPress 的發(fā)展歷程,和設(shè)計(jì)的修改 , 其實(shí)對(duì)我們自己設(shè)計(jì)一些系統(tǒng)是很有幫助的 。
【一文詳解 WordPress 的分類模式設(shè)計(jì):各個(gè) Term 表之間的關(guān)系】
- GPT和MBR,詳解硬盤分區(qū)的知識(shí)盲點(diǎn)
- NTFS和FAT32,一文說透文件系統(tǒng)的知識(shí)盲區(qū)
- WordPress SEO 寶典:讓你的博客流量增長10倍
- WordPress 6.1 將新增 is_login_screen 函數(shù)用于判斷當(dāng)前是登錄界面
- 世間再無「又一個(gè)WordPress站點(diǎn)」
- WordPress 6.0 發(fā)布,全面增強(qiáng)編輯器和全站編輯
- 一個(gè)函數(shù)就搞定 WordPress 后臺(tái)文章列表自定義欄目開發(fā)
- 用最古老的 WordPress 系統(tǒng),寫最現(xiàn)代的 PHP 代碼!
- 縮略圖 教程: WordPress 文章特色圖片功能
- 一文分享手機(jī)詳細(xì)參數(shù) ?oppoa11s手機(jī)價(jià)格和參數(shù)
