为什么WordPress会在wp_Terms表中组合同名的术语?

时间:2012-08-03 作者:Anne Jan Roeleveld

为某个分类法添加一个名称为Test的术语为另一个名称为Test的分类法添加另一个名称为Test的术语在wp\\u terms表中可以找到两个术语的一条记录。在wp\\u term\\u taxonomy表中,您可以找到两条记录,其中包含分类法和描述以及有关术语的其他信息

编辑:真正的问题不是为什么WP在分类法中使用唯一的slug。这是显而易见的。这就是为什么WP在WP\\U术语中为同一术语使用一条记录的原因。但在不同的分类法中,“测试”的含义可能不同。如果您将其中一个术语编辑为不同的。这已经不可能了。WordPress将编辑两者,因为它们都链接到相同的term\\u id。

1 个回复
最合适的回答,由SO网友:Brian Fegter 整理而成

这是因为条款。slug和术语。名称都是MySQL表结构的唯一索引。

Unique  Packed  Column  Cardinality Collation
PRIMARY BTREE   Yes No  term_id 13  A
slug    BTREE   Yes No  slug    13  A
name    BTREE   No  No  name    13  A
WordPress使用规范重定向,主要依赖于可行的single posts.post_nameterms.slug 查询结果。具有相同的多个条目post_name 或者slug完全消除了规范重定向的可靠性,因此在这些表中定义了唯一索引。

术语名称之所以唯一,是因为当用户创建新类别或标记时,它通常是slug的来源。此外,菜单术语slug是从术语名称生成的。如果两个名称匹配,那么slug将不是唯一的。

虽然我不推荐,但您可以手动进入term_taxonomy 和合伙人term_id 如果需要伪“副本”,请使用不同的术语。我无法在你的网站上解释这一点的含义,但从技术上讲,这将颠覆这种结构化的口述。

一位智者曾经告诉我,如果不先问一下为什么要建一座桥,就不要烧毁它。这是一个很好的应用程序。如果不理解为什么表索引首先是唯一的,就不要开始创建伪重复。

规范重定向自2.3版起就已就位。退房Mark Jaquith\'s post here for a more in-depth explanation.

您可以使用以下选项禁用规范重定向:

remove_filter(\'template_redirect\', \'redirect_canonical\');
希望这有助于澄清问题。

结束

相关推荐

以编程方式添加TERMS/TERM_TASTIONIES时出现异常行为

这在我看来确实像个虫子。我为您编写了以下代码,以便在新安装上对其进行测试。基本上,代码将在“未分类”下添加两个子类别,以实现以下效果uncategorized sub-uncategorized sub-sub-uncategorized 将它们添加到wp\\U terms和wp\\U term\\u分类中没有问题。已正确添加两个父ID。问题出在wp管理ui中。您只能看到未分类和子未分类。最后一个(sub-sub)在运行中丢失!但是,如果您在同一个“添加类别”