按计数获取自定义分类术语列表,其中包含自定义 post_type 个帖子
Get the list of custom taxonomy terms by count which have custom post_type posts
在我的 WP v5.9.3 中,我有自定义 post 类型“歌曲”和一个共享的自定义分类法“流派”。
在“歌曲”存档页面上,我想列出所有“流派”分类法的术语,其中“歌曲”post 类型有 post 个。
使用 get_terms
我能够从“流派”中获取所有术语,但无法过滤具有“歌曲”posts 的术语。
虽然我不是SQL查询的专家,但我尝试了以下但无法获取列表:
$SQLquery = "SELECT wp_terms.* COUNT(*)from wp_terms
SELECT wp_posts.ID FROM wp_posts
INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
INNER JOIN wp_term_relationships ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
INNER JOIN wp_posts ON wp_posts.ID = wp_term_relationships.object_id
WHERE 1=1
AND wp_posts.post_type IN ('song')
AND wp_posts.post_status = 'publish'
AND wp_term_taxonomy.taxonomy = 'genre'
GROUP BY wp_terms.term_id
ORDER BY wp_terms.term_id DESC";
$SQLqueryResult = $wpdb->get_results($SQLquery, ARRAY_A);
$SQL_term_ids = wp_list_pluck($SQLqueryResult, 'term_id');
如何使上述 SQL 查询工作以获取术语列表,或者是否有任何简单/内置的 WordPress 功能?
谢谢。
更新 1
问题出在 SQLquery
中的多个 SELECT
,删除后 SELECT wp_posts.ID FROM wp_posts
代码按要求工作。
您的查询开头存在问题。你不能像这样使用两个 select。当你想 select 多列时,你需要使用逗号,意思是“select table1.column1, table2.column1...from yourselection.”
在我的 WP v5.9.3 中,我有自定义 post 类型“歌曲”和一个共享的自定义分类法“流派”。
在“歌曲”存档页面上,我想列出所有“流派”分类法的术语,其中“歌曲”post 类型有 post 个。
使用 get_terms
我能够从“流派”中获取所有术语,但无法过滤具有“歌曲”posts 的术语。
虽然我不是SQL查询的专家,但我尝试了以下但无法获取列表:
$SQLquery = "SELECT wp_terms.* COUNT(*)from wp_terms
SELECT wp_posts.ID FROM wp_posts
INNER JOIN wp_term_taxonomy ON wp_terms.term_id = wp_term_taxonomy.term_id
INNER JOIN wp_term_relationships ON wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
INNER JOIN wp_posts ON wp_posts.ID = wp_term_relationships.object_id
WHERE 1=1
AND wp_posts.post_type IN ('song')
AND wp_posts.post_status = 'publish'
AND wp_term_taxonomy.taxonomy = 'genre'
GROUP BY wp_terms.term_id
ORDER BY wp_terms.term_id DESC";
$SQLqueryResult = $wpdb->get_results($SQLquery, ARRAY_A);
$SQL_term_ids = wp_list_pluck($SQLqueryResult, 'term_id');
如何使上述 SQL 查询工作以获取术语列表,或者是否有任何简单/内置的 WordPress 功能? 谢谢。
更新 1
问题出在 SQLquery
中的多个 SELECT
,删除后 SELECT wp_posts.ID FROM wp_posts
代码按要求工作。
您的查询开头存在问题。你不能像这样使用两个 select。当你想 select 多列时,你需要使用逗号,意思是“select table1.column1, table2.column1...from yourselection.”