吵吵   2011-08-21  阅读:4,200

wordpress的数据库一向是比较小的那种,如无扩充,现在是12个表。从phpadmin进入看看后,发现一个博客的表确实是简单,不会像cms等各种纠结的关系,也许这个wp依然php而不是静态页得原因之一吧。通过对数据库的观察,最纠结的还是tags即标签的表比较复杂呢,这里来理清一下,因为最近想写个插件,为每个tags增加一张图片。

在wordpress中标签实际上也是分类的一种,他将分类和标签已经完全的融合在一起了,这样做的好处无疑是将分类扩大化了,当你点击一个标签的时候,出来的是和这个标签有关的所有文章。这里也要劝告大家一下标签要合理的加。
wp用来记录这个几个标签的表分别是 wp_blogterms,wp_blogterm_relationships,wp_blogterm_taxonomy。
wp_blogterms的结构为:
1 term_id bigint(20) 这个记录的是term的id,不管是tag还是分类都叫term吧。
2 name varchar(200) 这个记录的是term的名称。
3 slug varchar(200) 这个是别名,当然是用来生成该term的连接的了。
4 term_group bigint(10)这个是类属于那个群,好像都是0哦。
好了,我们知道,这表就有了我们所有的分类和tags并且保存了访问该tags的链接地址。
wp_blogterm_relationships这个表一听就是代表了我们terms的关系么,到底和什么的关系,我们看表结构
1 object_id bigint(20) 这个是问斩的id了
2 term_taxonomy_id bigint(20) 但是这个不是term的id,这个是分类上的id了
3 term_order int(11) 这个就是顺序了。
好了,看到这里可能你会认为这个已经ok了,通过relationships这个表把terms和文章id连接起来了,但是事实并非如此,继续看下一个表 wp_blogterm_taxonomy,结构为:
1 term_taxonomy_id 这个是上面一个表中的term_taxomoy_id了,就是所谓分类上的id
2 term_id bigint(20) 这个就是分类上的id核terms的id的对应关系了
3 taxonomy varchar(32) 这个会分是分类还是标签
4 description longtext 描述
5 parent bigint(20) 父分类
6 count bigint(20) 日志计数
看完了所有的表,我们来理清楚一下关系,首先如果我们要知道一篇文章的tags,那么我们先要访问wp_blogterm_relationships这张表,然后找到和我们文章相连接的term_taxonomy_id然后根据这个id访问 wp_blogterm_taxonomy表,得到真正的term_id,之后利用这term_id访问wp_blogterms的表,从而找到我们的tags以及它的连接地址。
这样子的表的结构确实有点复杂,我想可能是wp后期的升级导致的如此的紊乱,当然也有可能是为了进行分类方便。好在wp提供的函数调用不会这么样子的折腾你,不过,想加入表的话,就难了。

吵吵微信朋友圈,请付款实名加入:

吵吵 吵吵

6条回应:“wp数据库分类表和标签表的结构”

  1. 贺昌说道:

    最近喜欢研究WordPress啊,准备优化主题了?

  2. 流氓兔足迹说道:

    Wp的用户还是多啊!一个不是WP用户的人飘过!

  3. 地球博客说道:

    我看晕了,哈哈。

  4. 葉少说道:

    o(︶︿︶)o 唉,不是用的WP

  5. […] wp数据库分类表和标签表的结构 八 21 编程相关 转自:http://www.chaochaoblog.com/archives/612 […]

  6. 实在看不懂,呵呵

发表评论

电子邮件地址不会被公开。 必填项已用*标注