理解和如何利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)

大家快瞧那结冰的湖水,春风一吹冰都融化了,河里的小鱼都游出海面,在湖水中自由的游来游去,多可爱的小鱼啊!多么欢快的小鱼啊!真是让人深深的为它那可爱的摸样着迷。春风一吹过那枯黄的小草身边时,小草突然边了摸样,它从原来的枯黄变成了嫩绿,慢慢地小草从嫩绿变成了鲜绿渐渐地越变越绿,绿的让人难以相信那是小草。啊!小草我为你的样子感到是个奇迹。
本文是《理解和利用 WordPress 中的数据》专题的第 7 篇,共 9 篇:
  • 理解和利用 WordPress 中的数据(介绍)
  • 理解和利用 WordPress 中的数据关系
  • 理解和利用 WordPress 中的内容类型
  • 理解和利用 WordPress 中的用户数据
  • 理解和利用 WordPress 中的posts表
  • 理解和利用 WordPress 中的元数据(Metadata)
  • 理解和利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)
  • 理解和利用 WordPress 中的选项表
  • 理解和利用 WordPress 中的数据 – 多站点

分类法(Taxonomies)使 WordPress 从一个博客系统走向了CMS系统,那么,这些分类法是如何存储在数据库中的?

分类法(Taxonomies)和分类项(Terms)是非常强大的 WordPress 功能,让你可以更加灵活地定制你的网站。它们与两种内容类型有关:文章和链接。数据库结构意味着这是一个一对多的关系,就是说一篇文章可以有多个分类项多种分类法,并且一个分类项可以分配到多个文章或链接。

我将从定义开始介绍它们,正如 WordPress 的其他东西一样,这些术语(terminology)可能会很混淆!

定义

分类法

一个分类法是一个目录化或分类化事物的系统,通常以分级的方式进行。最著名的分类法是 Linnean Taxonomy ,用来对所有活的的事物分类。

在WordPress中,分类法用来对你的数据进行分类并且把他们分组到数据集或子集中。

WordPress有3种内置的 分类法:

  • 目录(category)
  • 标签(tag)
  • 链接目录(link category)

目录和标签有点像文章和页面,他们是相同的类型的内容(分类法),但是默认的行为却不相同,在这方面,目录是分层的然后标签不是。

链接目录(link category)与标签的工作方式相似,理论上可以应用到各种对象类型,但是默认情况下它不会显示在文章编辑区,如果链接是可用的话会显示在编辑区。

你也可以添加任意多你想使用的自定义的其他分类。它们与目录和标签的工作方式相似。你的每一个分类都有与内置分类相同的状态。这跟post和自定custom post type 的比较相似。

分类项

每一个分类法都有使用的分类项来对你的数据排序。一个目录只是目录分类的一个分类项,一个标签是标签分类的一个分类项。当你创建分类时,你将会通过WordPress仪表盘或者使用 wp_insert_term() 函数为你的分类创建分类项。

分类项当与自定义的查询结合时非常有用:你可以在你的主题或插件中创建自定义的样例文件来显示带有多种分类项的文章,以分类项排序,通过分类法确认分类项等等。

WordPress如何存储分类项和分类法

如我在数据之间的关系好代码教程中描述的,WordPress使用多对多的关系,这些关系通过使用3个表来创建:

  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms

如下图所示,这些表一起链接到`wp_posts`和`wp_links`:

我们来看一下每一个表以及他们怎么工作的。

wp_terms表

wp_terms 表存储目录,标签,链接目录和自定义分类的所有单个分类项。有4个字段:

  • term_id 是分类项的唯一ID
  • name
  • slug
  • term_group这个字段暂时在WordPress中没有使用,所以你可以忽略它。

wp_term_taxonomy表

wp_term_taxonomy 表存储更多关于分类项的数据以及他们属于的分类,它有6个字段:

  • term_taxonomy_id 存储表中该记录的ID
  • term_id 代表分类项的ID,链接到wp_terms表的该条记录
  • taxonomy 是这个分类项所属的分类的名称
  • description
  • parent 表示该分类项的父分类项,如果该分类是分层的而且它有父分类项
  • count 是该分类项下文章的数目

在很多WordPress安装中,在`wp_term_taxonomy`表中会有一条为`wp_terms`表中每个分类项的记录,但是在一些情况下会有为每个分类项超过一条的记录。这种情况会在你两个不同的分类中创建两个拥有相同名称和slug的时候发生,这意味着你可以创建一个查询来输出多个分类下的一个分类项。

这意味着这两个表的关系是一对多:一个`wp_terms`的记录可能链接到`wp_term_taxonomy`表中的多条记录,但是`wp_term_taxonomy`表中每条记录只会链接到`wp_terms`表中的一条记录。

wp_term_relationships表

wp_term_relationships 表在创建对象和分类项多对多的关系中是至关重要的。它只有3个字段:

  • object_id 链接到wp_posts 表的 post_id 字段或 wp_links 表的link_id 字段。
  • term_taxonomy_id 链接到wp_term_taxonomy 表的相同字段
  • term_order 是分类项添加到对象的顺序。只有当你 注册分类法 - 明确排序参数为true时使用到-默认是false所以默认值是0。

因为每一个对象可能关联到`wp_term_relation`表中的多条记录,而且每个分类项也可以,这就形成了多对多关系。

总结

对象(即文章,链接)和分类项之间的关系是非常有用的,部分原因因为这是时Worpress中唯一的多对多关系。

理解这些关系如何工作以及关键数据存储的位置将会帮助你理解分类法和分类项如何工作以及如何使用 相关的函数 。

原文出自:http://code.tutsplus.com/tutorials/understanding-and-working-with-taxonomies-and-terms-in-wordpress--cms-21051

由 骑着蜗牛去拉萨@wordpress大学 原创翻译,未经允许,禁止转载和采用本译文。

到此这篇关于理解和如何利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)就介绍到这了。勇士搏出惊涛骇流而不沉沦,懦夫在风平浪静也会溺水。生活不是让你用来妥协的。你退缩得越多,那么可以让你喘息的空间也就是越少。更多相关理解和如何利用 WordPress 中的分类法(Taxonomies)和分类项(Terms)内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!