Term_id和Term_Taxonomy_id有什么不同

时间:2012-01-02 作者:Daithí

标题说明了一切。目前,在我的自定义分类法中,我使用术语id和分类法名称来获取术语。

我以为这个问题以前会被问过,但在任何地方都找不到!所以我想问问有没有人有什么答案。

5 个回复
最合适的回答,由SO网友:Juan Ramón 整理而成

如果您查看Wordpress文档,您会发现Wordpress Taxonomies

  • term_id 是术语表中术语的IDterm_taxonomy_id 是术语+分类法对的唯一ID

SO网友:Ken.shinde

The Codex says:

<术语id是术语表中术语的id,术语分类法id是术语+分类法对的唯一id

What does this mean?

术语就是一个词。它可以属于分类法,例如标记、类别或自定义分类法。问题是:可以有几个分类法包含相同的术语。

假设您有一个名为“Fattinging”的术语。这个词有一个id号。这是术语\\u id。它不取决于这个词的使用方式,即该术语出现在哪个分类中。

现在,“发胖”这个词作为贴子标签也有一个数字。这是术语\\u taxonomy\\u id。它对应于“post标记‘fattinging’”。

也许你也有一个叫做“育肥”的类别。虽然term\\u id相同,但term\\u taxonomy\\u id(用于“肥育”类别)不同。

SO网友:jave.web

由于这是对设计更深入理解的一部分,我将从整体上描述它……:)

WP 4.5.3中仍然有所有这些表格(我将讨论它们,不带前缀):

post术语关系分类法获取post术语可读名称的路径贯穿于所有术语。

posts<这里的主要标识是ID - 帖子的id(任何类型)

term_relationships
存储成对的:
object_id - 可以posts.ID (但不一定是)
term_taxonomy_id - 这是NOT 术语(类别)的id,但id of RELATIONSHIP 双方;术语(类别)和分类(“类别类型”)

term_taxonomy<这里的主要标识是term_taxonomy_id 上面写的是另一个重要的栏目:
term_id - an id of a term (类别)
taxonomy - 存储术语的分类(“类别类型”)

这可能看起来很有趣,但最初的目的是增加术语具有更多分类的能力(这在某些情况下是有意义的)。

terms<这里的主要标识是term_id - 类别的id这里的另一个重要列是:
name - 可读类别名称,例如“音乐流派”
slug - 一个可用的术语的首字母,例如在URL中

因此,演示SQL以获取所有已发布的帖子及其带有类别名称的所有类别的过程可能如下所示(在您自己的WP DB上测试时,向表中添加前缀):

SELECT * FROM
posts #gets posts
LEFT JOIN
term_relationships #gets posts relationships to term_taxonomies
ON(posts.ID=term_relationships.object_id)
LEFT JOIN
term_taxonomy #gets term_ids 
ON(term_relationships.term_taxonomy_id=term_taxonomy.term_taxonomy_id)
LEFT JOIN
terms #finally, gets terms\' names
ON(term_taxonomy.term_id=terms.term_id)
WHERE (
    (posts.post_status=\'publish\') 
    #optionally you can filter by a certain post_type:
    #AND
    #(posts.post_type=\'some_post_type\')
)
ORDER BY posts.ID ASC

SO网友:Rens Tillmann

术语本身不是类别或标记。必须通过term\\u taxonomy表为其提供上下文。

term\\u taxonomy表将术语放置在分类中。这就是术语category, A.tagcustom taxonomy (或在分类法的组合中)。

term_id 是术语表中术语的ID。

term_taxonomy_id 是术语+分类法对的唯一ID。

这个term_id 总是独一无二的,就像term_taxonomy_id.两者都有Auto Increment 在表结构中。

桌子wp_term_taxonomy 例如,确保创建了一个类别,以便wordpress可以干预它,例如Woocommerce使用:product_tag, product_type, product_cat, 所有这些都是所谓的自定义分类法。此表还绑定父/子结构。用它的列parent.

最后一个表term\\u relationships将对象(如帖子或链接)与term\\u taxonomy表中的term\\u taxonomy\\u id相关联。

如果我们再次选择Woocommerce作为示例,则此表链接post类型products 他们的分类product_cat, 其中包含一个名称,例如计算机,当然是从表中检索的wp_terms. 此表包含term_id, name, slugterm_group. (我个人从未使用过term\\u group)

希望以上内容能让我们更清楚地了解这些差异以及Wordpress如何使用这些表。

SO网友:Gleb Kemarsky

“本条”;Understanding and Working with Taxonomies and Terms in WordPress"E;解释使用两个单独表格的原因-wp_termwp_term_taxonomy:

在许多WordPress安装中,在wp_term_taxonomy 中每个术语的表wp_terms 表,但在某些情况下,每个学期将有多个记录。当您在不同的分类法中创建两个具有相同名称和slug的术语时,就会发生这种情况,这意味着您可以创建一个查询来输出多个分类法中具有该术语的帖子。

这意味着这两个表之间的关系是一对多的:在wp_terms table 可以链接到中的多个记录wp_term_taxonomy 表,但中的每个记录wp_term_taxonomy 仅链接到中的一条记录wp_terms.

结束

相关推荐