Wp_Term_Taxonomy.Parent引用了什么?

时间:2019-02-13 作者:Tyler Sebastian

我最初的想法是,它引用了另一种分类法(即wp_term_taxonomy.parentwp_term_taxonomy.term_taxonomy_id). Corcel这样的怪物built under this assumption. 然而,我done some digging 大多数信息似乎表明它实际上引用了wp_terms.term_id.

在Corcel的案例中,我认为这种巧合是可行的——WordPress将设置term_id 以及term_taxonomy_id 到相同的值。如果您弄乱了数据,或者应用了自己的导入/迁移,您可能不会得到相同的行为。

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

WordPress在MySQL中不使用实际的外键约束。所以,从技术上来说,wp_term_taxonomy.parent 只是一个整数。然而,您发现的是正确的:它指的是wp_terms 按itsterm_id. 但是,正如你所注意到的term_idterm_taxonomy_id 应该始终保持不变。

它们都存在的原因是历史的。在WordPress 4.2之前,分类术语可能属于多个分类。所以你可以在wp_terms 对应于中的多行的wp_term_taxonomies. WordPress 4.2对此进行了更改,以便术语只能属于单个分类法。您可以在this Make post from 2015.

现在你应该只使用term_id 以编程方式引用术语,由于术语的父级也是术语,父级值通过其term_id.

理想情况下parent 财产只会在wp_terms 表,但由于向后兼容的原因,现有结构可能会保持不变。

相关推荐

使用Get_the_Terms列出自定义分类的子类别

目前,我使用以下代码以自定义帖子类型输出此自定义分类法中的所有类别:<?php $args = array( \'post_type\' => \'video_cpt\', \'post_status\' => \'publish\', \'posts_per_page\' => -1, \'orderby\' => \'publis