Wordpress 获取与自定义帖子类型相关的术语

Wordpress 获取与自定义帖子类型相关的术语,wordpress,taxonomy,custom-post-type,term,Wordpress,Taxonomy,Custom Post Type,Term,我正在建立一个网站的基础上提供给每个美国州的信息类别。我为每个州创建了一个名为state_data的分类法和一个自定义的post类型。state post类型共享分类法,但并非所有的state都将获得所有术语。我正在寻找一种方法来列出所有只与特定州相关的术语。本机wp函数get_terms获取分类法的所有术语。有没有办法按post类型筛选get\U术语?好的。如果每个post_类型中没有那么多表示状态的实体。说10就可以了。您可以在一个post_类型中循环所有实体,并使用wp_get_post_

我正在建立一个网站的基础上提供给每个美国州的信息类别。我为每个州创建了一个名为state_data的分类法和一个自定义的post类型。state post类型共享分类法,但并非所有的state都将获得所有术语。我正在寻找一种方法来列出所有只与特定州相关的术语。本机wp函数get_terms获取分类法的所有术语。有没有办法按post类型筛选get\U术语?

好的。如果每个post_类型中没有那么多表示状态的实体。说10就可以了。您可以在一个post_类型中循环所有实体,并使用wp_get_post_terms result的循环来记录所有术语ID,并在数组中对其进行标记

我在SQL方面并没有我想要的那个么有经验,但当我查看数据库时,这可以通过自定义SQL查询来实现

看,特定自定义帖子类型的每个实体都有唯一的ID。您可以

SELECT ID FROM wp_posts WHERE post_type = 'Alabama';
现在你有了阿拉巴马州实体的所有ID。现在,您可以选择分配给这些实体的所有术语

SELECT term_taxonomy_id FROM wp_term_relationship WHERE object_id IN ( *RESULT FROM PREVIOUS QUERY* );
现在您已经有了与所有阿拉巴马实体相关的term_taxonomy_ID,您可以从wp_term_taxonomy表中获得它们

SELECT term_id from wp_term_taxonomy WHERE term_taxonomy_id in ( *RESULT FROM PREVIOUS QUERY* );

最后,您可以从wp_术语中获取所有术语或通过PHP函数查询它们。正如我所说。我不是SQL专家,所以我无法通过一个SQL查询将其组合在一起,但如果能借助PHP的一点帮助将其组合在一起,我就不会那么复杂了。但重要的是效率,我想…

好吧。如果每个post_类型中没有那么多表示状态的实体。说10就可以了。您可以在一个post_类型中循环所有实体,并使用wp_get_post_terms result的循环来记录所有术语ID,并在数组中对其进行标记

我在SQL方面并没有我想要的那个么有经验,但当我查看数据库时,这可以通过自定义SQL查询来实现

看,特定自定义帖子类型的每个实体都有唯一的ID。您可以

SELECT ID FROM wp_posts WHERE post_type = 'Alabama';
现在你有了阿拉巴马州实体的所有ID。现在,您可以选择分配给这些实体的所有术语

SELECT term_taxonomy_id FROM wp_term_relationship WHERE object_id IN ( *RESULT FROM PREVIOUS QUERY* );
现在您已经有了与所有阿拉巴马实体相关的term_taxonomy_ID,您可以从wp_term_taxonomy表中获得它们

SELECT term_id from wp_term_taxonomy WHERE term_taxonomy_id in ( *RESULT FROM PREVIOUS QUERY* );

最后,您可以从wp_术语中获取所有术语或通过PHP函数查询它们。正如我所说。我不是SQL专家,所以我无法通过一个SQL查询将其组合在一起,但如果能借助PHP的一点帮助将其组合在一起,我就不会那么复杂了。但重要的是效率,我想…

你可能想试试这样的东西:

SELECT p.ID, p.post_title, tr.term_taxonomy_id, t.`name` 
FROM wp_term_relationships as tr 
JOIN wp_posts AS p ON p.ID = tr.`object_Id`
JOIN wp_terms AS t ON t.`term_id` = tr.`term_taxonomy_id`
WHERE p.post_type = 'state_data'
AND t.`name` = 'Alabama'
ORDER BY p.ID;
您可以从
选择
查询中选择所需内容。。。只要ID,或者任何你想要的字段


本质上,查询所做的是通过terms\u关系表将terms表链接到posts表

您可能想尝试以下方法:

SELECT p.ID, p.post_title, tr.term_taxonomy_id, t.`name` 
FROM wp_term_relationships as tr 
JOIN wp_posts AS p ON p.ID = tr.`object_Id`
JOIN wp_terms AS t ON t.`term_id` = tr.`term_taxonomy_id`
WHERE p.post_type = 'state_data'
AND t.`name` = 'Alabama'
ORDER BY p.ID;
您可以从
选择
查询中选择所需内容。。。只要ID,或者任何你想要的字段


本质上,查询所做的是通过terms\u关系表将terms表链接到posts表

这不是太复杂了吗?您有50种独特的post_类型?有一个post_类型,比如“state”,和一个分类法state_数据不是更好吗?我将post类型用于多种用途。例如,我使用它们从一个姐妹站点获取RSS提要,而我无法控制该站点中的标记。它还必须符合已经为附带的应用程序设计的组织。相信我,我在寻找更好的方法。这不是太复杂了吗?您有50种独特的post_类型?有一个post_类型,比如“state”,和一个分类法state_数据不是更好吗?我将post类型用于多种用途。例如,我使用它们从一个姐妹站点获取RSS提要,而我无法控制该站点中的标记。它还必须符合已经为附带的应用程序设计的组织。相信我,我在寻找更好的方法。如果有人简化3行查询会更好。如果有人简化3行查询会更好。