我不是程序员,所以可能有一种更有效/正确的方法来实现这一点。
将其放入函数中。php或自定义插件:
function get_terms_by_post_type( $taxonomies, $post_types ) {
global $wpdb;
$query = $wpdb->get_results( "SELECT t.*, COUNT(*) from $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN $wpdb->term_relationships AS r ON r.term_taxonomy_id = tt.term_taxonomy_id INNER JOIN $wpdb->posts AS p ON p.ID = r.object_id WHERE p.post_type IN(\'".join( "\', \'", $post_types )."\') AND tt.taxonomy IN(\'".join( "\', \'", $taxonomies )."\') GROUP BY t.term_id");
return $query;
}
function show_post_type_terms($taxonomy, $posttype = null ) {
global $post;
if(!isset($posttype)) $posttype = get_post_type( $post->ID );
$terms = get_terms_by_post_type( array($taxonomy), array($posttype) );
echo \'<ul>\';
foreach($terms as $term) {
$output = \'<li><a href="\'.get_bloginfo(\'url\').\'/\'.$taxonomy.\'/\'.$term->slug.\'/?post_type=\'.$posttype.\'">\'.$term->name.\'</a></li>\';
echo $output;
}
echo \'</ul>\';
}
用法示例:
放置<?php show_post_type_terms(\'taxonomy_name\'); ?>
进入自定义帖子类型存档模板文件,以显示taxonomy\\u name的术语列表,排除当前自定义帖子类型的帖子未使用的所有术语,并链接到仅显示该特定帖子类型的帖子的术语存档
放置<?php show_post_type_terms(\'taxonomy_name\', \'custom_post_type_name\'); ?>
在任何其他模板文件中,对特定的自定义帖子类型执行相同的操作您还可以将其调整为一个快捷码,您可以直接将其放置到帖子或页面中,如[show_post_type_terms taxonomy="taxonomy_name" posttype="post_type_name"]
. 如果您正在查找此代码,请告诉我改编自
this. ($wpdb->prepare已更改为$wpdb->get\\u results,原因是
this)