该问题以前曾被问过,但在任何地方都找不到!因此,以为我会问一下是否有人有答案。
#1 楼
如果您查看Wordpress文档,则会发现Wordpress分类标准term_id是术语表中的术语ID
term_taxonomy_id是术语+分类对的唯一ID。
#2 楼
食典说:term_id是术语表中术语的ID
term_taxonomy_id是术语+分类对的唯一ID
这是什么意思?
术语是一个词。它可以属于一个分类法,例如标签,类别或自定义分类法。问题是:可以有多个包含相同术语的分类法。
假设您有一个术语“ fattening”。这个单词有一个ID号。这是term_id。它不依赖于该词的使用方式,即该词出现在哪个分类法中。
现在,“ fattening”一词作为邮政标签也有一个数字。这是term_taxonomy_id。它对应于“后标签'fattening'”。
也许您也有一个名为“ fattening”的类别。虽然term_id相同,但“ fattening”类别的term_taxonomy_id不同。
#3 楼
因为这是对设计有更深入了解的一部分,所以我将对它进行整体描述... :)在WP 4.5.3中,仍然存在所有这些表(我将不加前缀地谈论它们) ):
帖子
term_relationships
term_taxonomy
条款
获取帖子术语可读名称的路径通过了它们全部。
帖子
这里的主要标识是
ID
-帖子的ID(任何类型)term_relationships
存储以下内容对:
object_id
-可以是posts.ID
(但不一定是)term_taxonomy_id
-这不是术语(类别)的ID,而是术语(类别)和分类法(“类别类型”之间的RELATIONSHIP的ID) )term_taxonomy
这里的主要标识符是上面描述的
term_taxonomy_id
^^ 其他重要列:
term_id
-术语的ID(类别)taxonomy
-存储该术语的分类法(“类别类型”)这可能看起来很有趣,但是最初的目的是添加术语具有更多分类法的能力(在某些情况下可能有意义)。
术语
这里的主要标识是
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
#4 楼
术语本身不是类别或标记。必须通过term_taxonomy表为其提供上下文。
term_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
,它们都所谓的自定义分类法。此表还绑定了父/子结构。最终表term_relationships带有
parent
列。最终表term_relationships将诸如post或链接之类的对象与term_taxonomy表中的term_taxonomy_id相关。如果我们再次选择Woocommerce作为示例,则该表将帖子类型
products
链接到其分类法product_cat
,其中包含一个名词,例如,当然是从表wp_terms
中检索到的计算机。该表包含term_id
,name
,slug
和term_group
。 (我个人从未使用过的term_group)希望以上内容可以使它们之间的差异以及Wordpress如何使用这些表的事情变得更加清楚。
#5 楼
文章“了解并使用WordPress中的分类法和术语”说明了使用两个单独的表的原因-wp_term
和wp_term_taxonomy
:在许多WordPress安装中,每个
wp_term_taxonomy
表中都有一条记录wp_terms
表中的术语,但在某些情况下,每个术语将有多个记录。当您在不同的分类法中创建具有相同名称和子词的两个术语时,就会发生这种情况,这意味着您可以创建查询以在多个分类法中输出具有该术语的帖子。这意味着这两个表之间的关系是一个多对多:
wp_terms table
中的一条记录可以链接到wp_term_taxonomy
表中的多条记录,但是wp_term_taxonomy
中的每条记录仅链接到wp_terms
中的一条记录。
评论
因此仅基于term_id操作和获取术语不会导致重复吗?
–Daithí
2012年1月2日,18:51
实际上只是回答了最后一个问题。看了wp_terms表,并且仅使用term_id是安全的。感谢您的回复@Juan
–Daithí
2012年1月2日,18:55
请注意,在WordPress 4.2中,所有术语均被拆分,这意味着每个term_id现在将在term_taxonomy表中仅出现一次(此列不是唯一的,并且术语可以在分类法中共享)。根据分类路线图,这一点将来可能会继续发展。其中一部分是合并术语和术语分类表。
– J.D.
16-4-19在19:04