订购自定义分类层次结构

时间:2019-10-15 06:21:00

标签: wordpress categories taxonomy taxonomy-terms

我对区域有一些自定义分类法。

很常见,它看起来像这样。

USA (parent)
- Arizona (child 1)
- - Phoenix (child 2)

但是,在某些情况下,它只会像

USA
- Arizona

UK
- Wales

甚至可能只是

Japan

在我的for循环中,我得到的分类法数据为$location = get_the_terms( $id, 'listings_region' );

,然后在html / php中,我可以简单地编写$location[0]->name,然后获得数组中第一个对象的名称。

但是,我注意到分类法返回的不是正确的层次结构,而是按字母顺序排列。

当我echo '<pre>'; print_r($location); echo '</pre>'时,得到数组,[0]将是Arizona,[1]将是USA。

如何以正确的顺序检索分类法数组,以使[0]始终是父级,[1]是第一个孩子,依此类推?

谢谢。

2 个答案:

答案 0 :(得分:0)

使其正常工作

$location = wp_get_post_terms($id, 'listings_region', array('orderby'=> 'parent'));

答案 1 :(得分:0)

我基本上了解您要显示所有类别以及相应的子类别。您可以通过以下代码执行此操作:

$terms = get_the_terms($id, 'listings_region');
foreach($terms as $key => $term){
    if($term->parent != 0){
        $terms[$term->parent]->children[] = $term;
        unset($terms[$key]);
    }
}

未经测试,因此您需要打印一次以获取自己的方式,但是需要更改访问该类别及其子类别的方法。