对自定义分类层次结构进行排序



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

通常它看起来像这样。

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] 将是亚利桑那州,[1] 将是美国。

如何以正确的顺序检索分类数组,以便理想情况下 [0] 始终是父项,[1] 是第一个子项,等等?

提前谢谢。

让它工作,

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

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

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

没有测试自己,所以你需要打印一次才能按照自己的方式,但是,需要改变访问该类别的方法,它是子的。

最新更新