因为你在一篇文章中,你需要先获得类别,然后使用get_ancestors()
显示层次结构。
$product_cats = wp_get_post_terms( get_the_ID(), \'product_cat\' );
if( ! empty( $product_cats ) ) {
$single_cat = array_shift( $product_cats );
$product_ancs = get_ancestors( $single_cat->term_id, \'product_cat\' );
if( ! empty( $product_ancs ) ) {
$top_level_cat = array_shift( array_reverse( $product_ancs ) );
$single_cat = get_term( $top_level_cat, \'product_cat\' );
}
echo $single_cat->slug;
}
如果未检查类别或所附术语没有父项,则上面的示例将运行一些错误检查。首先,我们获得所有的Post术语,并仅使用1作为基础来获取其所有祖先。如果它有父母或祖父母,它将在我们的
$product_ancs
大堆让我们看看
example given in The Codex:
书籍(6)小说(23)神秘(208)<?php get_ancestors( 208, \'category\' ); ?>
返回以下数组:
Array
(
[0] => 23
[1] => 6
)
顶层位于阵列的末端,这是我们利用的方式
array_reverse()
.
第二种方法是使用循环,逐个遍历每个术语,直到到达顶部。每个父母都不应该有一个父母($top_term->parent
将为0->false->empty),因此我们可以在循环中查找:
$product_cats = wp_get_post_terms( get_the_ID(), \'product_cat\' );
$single_cat = array_shift( $product_cats );
if( ! empty( $product_cats ) ) {
$single_cat = array_shift( $product_cats );
$top_term = $single_cat;
if( $top_term->parent > 0 ) {
while( $top_term->parent > 0 ) {
$top_term = get_term( $top_term->parent, \'product_cat\' );
}
} else {
$attr = \'no_parent\';
}
$attr = $top_term->slug;
} else {
$attr = \'empty_categories\';
}
一旦
while
循环返回false(到达0的父级),我们知道我们已经到达了层次结构的顶部。