公告:123目录网为广大站长提供免费收录网站服务,我们将免费进行到底,如需快审服务(10元/站)请联系站长QQ,可自助充值发布。

点击这里在线咨询客服
新站提交
  • 网站:315
  • 待审:0
  • 小程序:12
  • 文章:35791
  • 会员:69

WordPress 2.3 版本之前文章只有分类的, 2.3 版本之后才增加了标签,所以可以说 WordPress 2.3 引入了新的分类模式,新的模式将取代 categories,post2cat 和 link2cat 这三个数据表,并引进三个新的更灵活的数据表:termsterm_taxonomyterm_relationships 表。

一文详解 WordPress 的分类模式设计:terms, term_taxonomy 和 term_relationships 表之间的关系插图

terms 表

第一个是 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 表

一个 term 不能由它自己决定是 category(分类)还是 tag(标签),它必须通过 term_taxonomy 这个数据表来决定:

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 对的唯一 ID
term_id terms 表外键 ID
taxonomy 指定了 term 属于什么分类模式,默认的分类模式有 “category”,“link_category” 和 “post_tag”。
parent 指定 terms 在 taxonomy 中层次关系
description 指定 term 在 taxonomy 中定义的描述
count 记录在每个 term+taxonomy 对中有多个对象,比如 taxonomy 为 “category”,则 count 记录了有多少篇文章在这个分类中。

term_relationships 表

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

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 的灵活性意味着插件能够能够非常容易增加新的分类模式和对象类型,甚至不同的分类模式可以共享 term,WordPress 4.2 之前确实是这样做的,支持不同的分类模式共享一个 term,比如同时有一个「使用技巧」的标签和分类,他们使用同一个 term。

但是这样设计很大的问题,因为在分类编辑页面,把「使用技巧」改成「WP使用技巧」,然后标签「使用技巧」也跟着改了。

这样是不是最好的设计,肯定不是,所以 WordPress 4.2 之后这个共享机制就取消了,不允许共享了,现在同时有一个「使用技巧」的标签和分类,他们不是同一个 term,会生成两个term。

所以如果某种程度上说,term 和 term_taxonomy 表是一一对应了,他们其实可以合并成一个表,但是 WordPress 为了考虑兼容问题就保留下来,看看 WordPress 的发展历程,和设计的修改,其实对我们自己设计一些系统是很有帮助的。

标签:wordpress教学

下一篇:【wordpress教学】你为什么建立 WordPress 个人博客?

上一篇:【wordpress教学】大家可以测试 WordPress SQLite 实现了

相关文章

  575

注册时间:

网站:1 个   小程序:3 个  文章:12 篇

  • 315

    网站

  • 12

    小程序

  • 35791

    文章

  • 69

    会员

赶快注册账号,推广您的网站吧!
最新入驻小程序

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康

体育训练成绩评定2018-06-03

通用课目体育训练成绩评定