在分类法归档中,这相当简单,因为您可以通过以下方式获得当前的分类法:
$term_object = get_queried_object();
$taxonomy = $term_object->taxonomy;
在帖子类型归档中,它有点复杂,因为您首先需要标识当前的帖子类型,然后检索附加到该帖子类型的分类法:
$post_type_object = get_queried_object();
$taxonomies = get_object_taxonomies( $post_type_object->name );
if ( ! empty( $taxonomies ) ) {
$taxonomy = $taxonomies[0];
}
因此,您需要将这些方法与正在查看的内容相结合,以获得当前分类法中的术语列表或与当前帖子类型相关的术语列表:
$taxonomy = null;
if ( is_tax() ) {
$term_object = get_queried_object();
$taxonomy = $term_object->taxonomy;
} elseif ( is_post_type_archive() ) {
$post_type_object = get_queried_object();
$taxonomies = get_object_taxonomies( $post_type_object->name );
$taxonomies = array_filter( $taxonomies, function( $taxonomy_name ) {
return get_taxonomy( $taxonomy_name )->public;
} );
if ( ! empty( $taxonomies ) ) {
$taxonomy = $taxonomies[0];
}
}
if ( $taxonomy ) {
wp_list_categories( array(
\'show_option_all\' => \'wszystkie\',
\'taxonomy\' => $taxonomy,
\'style\' => \'none\',
\'separator\' => \'\',
) );
}
编辑:我已将此代码添加到帖子类型存档版本中,以过滤掉任何附加到帖子类型的非公共分类法:
$taxonomies = array_filter( $taxonomies, function( $taxonomy_name ) {
return get_taxonomy( $taxonomy_name )->public;
} );