在我的页面上,我显示了与帖子相关的自定义分类术语。例如,一个职位可能有以下继承权:
Filmmaking -> Production -> Cinematogrpahy
为此,我在我的
content-child
页
<?php
/*Retrieve Category Name */
if(get_the_terms($post->ID, \'kernal_category\', true)) {
// Create an empty array
$kernal_category = get_the_terms($post->ID, \'kernal_category\', true);
$categories = [];
// Save each category to the array
foreach ($kernal_category as $category) {
$categories[] = $category->name;
}
// Now output with implode
echo implode(\' > \', $categories);
}
?>
我的问题是,当显示这些术语时,它们没有遵循正确的层次结构。使用上面的示例,我的帖子实际显示如下:
Cinematography -> Production -> Filmmaking
.
我已经检查过了,并且该分类的主要设置正确,即电影摄影的主要设置是电影制作
如何按层次显示它们?
更新:它似乎会影响具有多个主要和次要术语的分类法。所有只显示主要和次要的帖子都正确显示。
最合适的回答,由SO网友:Tom J Nowell 整理而成
如果要显示术语及其所有父项/祖先,可以执行以下操作:
function display_term_parents( \\WP_Term $starting_term ) {
$terms = [];
$term = $starting_term;
while ( !is_wp_error( $term ) ) {
$terms[] = $term->name;
$term = get_term( $term->parent, \'kernal_category\' );
}
$terms = array_reverse( $terms );
echo implode(\' > \', $terms );
}
哪里
$starting_term
是要显示其祖先/父母的术语。
假设您只检查了所需的术语,但没有检查其所有父项,则可以为帖子的每个术语(或仅第一个术语)执行此操作