乌徒帮技术范WordPressWordPress内核 › wordpress分类方法体系Taxonomy的初步探讨

wordpress分类方法体系Taxonomy的初步探讨

分类:WordPress内核

在wordpress中,我们很很奇怪的是,它的分类和我们理解中的分类存在一定的偏颇。我们理解中的分类只是简单的对文章内容的分类,而在wordpress中,这种分类仅仅被定义为栏目、分类目录,而除此之外,wordpress存在一个我们不是很理解的“分类法”的概念,当然,如果简单的从字面理解很简单,即按照一定的方法进行分类,可是用到程序中应该如何表达呢?Taxonomy便是wordpress的逻辑处理。

如果你进行wordpress插件开发,在调用数据库时,会非常奇特的和怪异的去琢磨wordpress的分类数据表,不熟练的开发者根本摸不清楚wordpress的文章分类如何进行数据管理。那么本文就对wordpress的Taxonomy分类方法进行初步的讲解。

一、wordpress中分类逻辑的探讨

我们在调用一些wordpress的分类函数时,经常会出现一个单词:term。没错,这个单词反映在数据库中会涉及到三张数据表:wp_terms、wp_term_relationships、wp_term_taxonomy,它们保存了wordpress中所有分类的信息,包括:文章分类、文章形式分类、标签分类、链接分类、其他分类等等,反映为英文即:category、post_format、post_tag、link_category、nav_menu等,可在wp_term_taxonomy表的taxonomy字段看到。

wordpress的分类方法Taxonomy:wordpress中将系统中出现的分类进行归类,某一分类属于什么类型的分类,即Taxonomy。例如,标签“乌徒帮”下有很多文章,属于一个分类,它是按照“post_tag”的分类法进行分类的。

wordpress的分类体系:wordpress中的分类按照category、post_format、post_tag、link_category、nav_menu等方法进行分类。

wordpress分类体系在数据库中:wp_terms保存分类的名称、别名(包括分类法,如post-fomat-aside);wp_term_taxonomy保存的是分类法下分类的关系,包括分类关系ID,分类的ID,分类法taxonomy,和分类的parent分类ID值,分类关系IDterm_taxonomy_id将在wp_term_relationships中被引用,此外,该表还保存了该分类的描述description和分类下的文章数目count;wp_term_relationships表保存着文章和分类关系term_taxonomy之间的关系,包括文章ID,term_taxonomy_id。

二、wordpress中分类法体系在数据库中是如何实现的

我们通过一个实例来看看数据表中这些数据内容之间的关系。

在wordpress中,如果你需要获取一个具体的分类,例如获取栏目“乌徒帮闲语”,首先根据文章ID在wp_term_relationships表中获取term_taxonomy_id值,再在wp_term_taxonomy表中获取分类的term_id和parent值等信息,最后再根据term_id在wp_terms获取分类的名称和别名,根据parent值在wp_terms中获取父分类的名称和别名。这三个表的关系大抵如此,你也可以倒过来,根据分类的别名从wp_terms中获取term_id,再到wp_term_taxonomy中获取它的描述和父分类ID,再返回wp_terms中获取父分类的别名和名称。

通过这样的举例,你就可以了解wordpress中分类方法体系的大致逻辑了。

我们再通过一个实例来看一下分类方法体系:

我们在写一篇文章时,插入一个新的标签或分类,以标签为例,首先,在表wp_terms中,创建一条记录,记录下标签的名称,返回term_id值;然后在wp_term_taxonomy中创建一条记录,用到了该term_id,taxonomy字段的值为post_tag,由于是标签,其他字段暂时无法补充,返回term_taxonomy_id;最后利用该term_taxonomy_id值,在wp_term_relationships表中创建一条新的记录,把文章的ID值和该term_taxonomy_id值作为两个字段内容。

三、wordpress中有关分类法体系的函数有哪些

否子戈无法完全列出这些函数,如果你是开发者,可以直接看源码:/wp-includes/taxonomy.php、/wp-admin/includes/taxonomy.php中的函数,前者在wordpress主题中使用,后者在后台设计中使用,如果要在主题中使用需要include_once进来。通过它们,你可以实现很多插入、删除、修改某一分类的功能。

wordpress中的category函数,你可以看源码/wp-includes/category.php、/wp-includes/category-template.php等文件中的函数,或参考wordpress开发文档。另外,在post.php等文件中也有几个相关的函数,如wp_get_object_terms、wp_set_object_terms()wp_set_post_terms()等函数将会在插件中用到。

否子戈只是初步的对wordpress分类方法体系进行了探讨,其中更多的wordpress核心逻辑还需要开发者深入研究。

填写个人信息,赶快回复吧!