wordpress网站开发:分类法(Taxonomies)和分类项(Terms)

2018-09-1509:37:23网站建设与开发Comments2,516 views字数 1977阅读模式

分类法(Taxonomies)使 WordPress 从一个博客系统走向了CMS系统,那么,这些分类法是如何存储在数据库中的?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

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

我将从定义开始介绍它们,正如 WordPress 的其他东西一样,这些术语(terminology)可能会很混淆!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

定义

分类法

一个分类法是一个目录化或分类化事物的系统,通常以分级的方式进行。最著名的分类法是 Linnean Taxonomy ,用来对所有活的的事物分类。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

在WordPress中,分类法用来对你的数据进行分类并且把他们分组到数据集或子集中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

WordPress有3种内置的 分类法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

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

目录和标签有点像文章和页面,他们是相同的类型的内容(分类法),但是默认的行为却不相同,在这方面,目录是分层的然后标签不是。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

链接目录(link category)与标签的工作方式相似,理论上可以应用到各种对象类型,但是默认情况下它不会显示在文章编辑区,如果链接是可用的话会显示在编辑区。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

你也可以添加任意多你想使用的自定义的其他分类。它们与目录和标签的工作方式相似。你的每一个分类都有与内置分类相同的状态。这跟post和自定custom post type 的比较相似。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

分类项

每一个分类法都有使用的分类项来对你的数据排序。一个目录只是目录分类的一个分类项,一个标签是标签分类的一个分类项。当你创建分类时,你将会通过WordPress仪表盘或者使用 wp_insert_term() 函数为你的分类创建分类项。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

分类项当与自定义的查询结合时非常有用:你可以在你的主题或插件中创建自定义的样例文件来显示带有多种分类项的文章,以分类项排序,通过分类法确认分类项等等。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

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

如我在数据之间的关系教程中描述的,WordPress使用多对多的关系,这些关系通过使用3个表来创建:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms

如下图所示,这些表一起链接到`wp_posts`和`wp_links`:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

wordpress网站开发:分类法(Taxonomies)和分类项(Terms)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

我们来看一下每一个表以及他们怎么工作的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

wp_terms表

wp_terms 表存储目录,标签,链接目录和自定义分类的所有单个分类项。有4个字段:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

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

wp_term_taxonomy表

wp_term_taxonomy 表存储更多关于分类项的数据以及他们属于的分类,它有6个字段:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

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

在很多WordPress安装中,在`wp_term_taxonomy`表中会有一条为`wp_terms`表中每个分类项的记录,但是在一些情况下会有为每个分类项超过一条的记录。这种情况会在你两个不同的分类中创建两个拥有相同名称和slug的时候发生,这意味着你可以创建一个查询来输出多个分类下的一个分类项。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

这意味着这两个表的关系是一对多:一个`wp_terms`的记录可能链接到`wp_term_taxonomy`表中的多条记录,但是`wp_term_taxonomy`表中每条记录只会链接到`wp_terms`表中的一条记录。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

wp_term_relationships表

wp_term_relationships 表在创建对象和分类项多对多的关系中是至关重要的。它只有3个字段:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

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

因为每一个对象可能关联到`wp_term_relation`表中的多条记录,而且每个分类项也可以,这就形成了多对多关系。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

总结

对象(即文章,链接)和分类项之间的关系是非常有用的,部分原因因为这是时Worpress中唯一的多对多关系。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/cms/4674.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/cms/4674.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定