WordPress 2.3 分类模式
September 5th, 2007 at 01:19pm 雪山飞猪 浏览: 2,802
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,正在校对中,欢迎并感谢指出错误。
作者:雪山飞猪
原文链接:WordPress 2.3 分类模式
我爱水煮鱼版权所有,转载时必须以链接形式注明作者和原始出处及本声明。







1. Andor | September 5th, 2007 at 2:23 pm
这么说原先的那三个表可以删除了?
[回复该留言]
2. 雪山飞猪 | September 5th, 2007 at 2:55 pm
@ Andor,好像还不能删除,我昨天把 category 这个表修改了名字,好像后台有地方提示出错?可能等 2.3 正式版出来再说把!
[回复该留言]
3. Polokus | September 5th, 2007 at 4:40 pm
好像不错啊,等正式版出来的时候升级玩玩
[回复该留言]
4. paopao | September 5th, 2007 at 5:20 pm
category API 依旧被保持作为 taxonomy API 向后兼容层,这个不知道可以保持到什么时候
[回复该留言]
5. 种菜种田养猪 | September 5th, 2007 at 9:17 pm
借鉴了Drupal,WordPress果然是在向CMS进化,新版WordPress表结构值得关注,感谢 鱼
[回复该留言]
6. sansky-存储部落 | September 11th, 2007 at 11:19 am
我现在用STP做的TAGS系统以后还怎么用?
[回复该留言]
7. qq2008 | November 1st, 2007 at 3:59 pm
怪不得有些插件不能用了.
[回复该留言]
8. cellx | July 9th, 2008 at 8:48 pm
水煮鱼能否讲解一下,wp分类模式变化以后
这个分类调用函数的使用方法
因为我的分类是中文的
实用category_name这个参数调用的话不支持
想用slug调用又无法实现
期待你的回复和邮件
谢谢~~
[回复该留言]
9. cellx | July 9th, 2008 at 8:51 pm
那个函数是
[回复该留言]
10. cellx | July 9th, 2008 at 8:51 pm
[回复该留言]