WordPress 2.3 分类模式

WordPress 2.3 将引入新的分类模式,新的模式将取代 categories,post2cat 和 link2cat 这三个数据表,并引进三个新的更灵活的数据表。第一个是 terms 表。它保存术语(term)的基本信息。


term_id bigint(20) NOT NULL auto_increment, name varchar(55) NOT NULL default '',
slug varchar(200) NOT NULL default '',
term_group bigint(10) NOT NULL default 0,
PRIMARY KEY  (term_id),
UNIQUE KEY slug (slug)

“name” 就是 term 的名字,“slug” 是用于使得 URL 友好化。“term_group” 是用于把相似的 terms 集合在一起。“term_id” 是 term 的唯一 ID。

一个 term 不能由他自己决定是 category(分类)还是 tag (标签)。它必须通过 term_taxonomy(术语分类类型)这个数据表上下文给定。

 
term_taxonomy_id bigint(20) NOT NULL auto_increment,
term_id bigint(20) NOT NULL default 0,
taxonomy varchar(32) NOT NULL default '',
description longtext NOT NULL,
parent bigint(20) NOT NULL default 0,
count bigint(20) NOT NULL default 0,
PRIMARY KEY  (term_taxonomy_id),
UNIQUE KEY term_id_taxonomy (term_id,taxonomy)

term_taxonomy 数据表放置了术语分类信息。它能够使得 term 是(分类)还是 tag (标签),或者两者皆是。 “term_id” 是 term 在 terms 表中的 ID。“taxonomy” 指定了 term 属于什么分类模式。默认的分类模式有 “category”,“link_category” 和 “post_tag”。“term_taxonomy_id” 是 term+taxonomy 对的唯一 ID。剩下的字段提供了 term 在分类模式上下文中的信息。“parent” 字段用于说明 terms 在 taxonomy 中层次关系。“description” 提供了 term 在 taxonomy 中的特殊模式。“count” 则记录在每个 term+taxonomy 对中有多个对象。举个 taxonomy 为 “category” 的例子,“count” 则记录了有多少篇日志在这个分类中。

最后一个表 table,term_relationships,把如 posts 和 links 这些对像和 term_taxonomy 表中的 term_taxonomy_id 联系起来。


object_id bigint(20) NOT NULL default 0,
term_taxonomy_id bigint(20) 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+taxonomy 对。

这种模式和 API 的灵活性意味着插件能够能够非常容易增加新的分类模式和对象类型。Summer of Code 中的一个项目就是做这个的。这种灵活性同样允许我们很容易获取所有对象共同拥有的一个 term,而不用管它他是什么分类模式,也可以为一个给定对象的从所有分类模式中获取所有的 term,还可以通过一个查询把所有的分类转化为标签。

在 taxonomy schema 的后面还隐藏着非常全面的 taxonomy API。 现在 category API 依旧被保持作为 taxonomy API 向后兼容层。当升级到2.3,使用 category API 的插件不需要做任何的改动。直接使用 SQL 查询 categories,link2cat 和 post2cat 这三个表的插件非常不幸不再可以工作。

这既是新的分类模式,短期内他会使得一些插件不可使用,但在长期内它将使我们能够增加任何新的分类类型而无需再次改变模式。

翻译自:WordPress 2.3 Taxonomy Schema,正在校对中,欢迎并感谢指出错误。

热门文章