订购自定义分类层次结构

时间:2019-10-15 作者:Ronald Langeveld

我有一些地区的自定义分类法。

通常看起来是这样的。

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]是第一个子级,等等?

提前谢谢。

2 个回复
SO网友:Ronald Langeveld

Got it working,

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

SO网友:Vantiya

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

$terms = get_the_terms($id, \'listings_region\');
foreach($terms as $key => $term){
    if($term->parent != 0){
        $terms[$term->parent]->children[] = $term;
        unset($terms[$key]);
    }
}
没有测试过自己的,所以您需要打印一次才能按自己的方式完成,但需要更改访问类别及其子级的方法。

相关推荐

如何按GET_TERMS显示所有类别

我正在使用下面的代码,但只显示父类别,而我有许多子类别。我想显示所有类别,包括家长和孩子<label for=\"<?php echo $this->get_field_id( \'link\' ); ?>\"><?php _e( \'دسته بندی\' ); ?></label> <select id=\"<?php echo $this->get_field_id(\'link\'