处理多级自定义分类层次结构

时间:2014-01-30 作者:Frank Astin

我试图在自定义分类法中通过多级层次结构进行排序。

我有自定义分类法和多个子分类法。例如:

Level1
-Level2
--Level3 
ect

目前我可以使用get_term_children() 返回顶级分类法的子级,但这并没有告诉我有关层次结构中的位置的任何信息。

2 个回复
SO网友:socki03

您可能需要使用get_terms() 与“parent”属性配对。

$args = array( \'parent\' => 0 );
$parents = get_terms( array( \'custom-tax\' ), $args );
foreach ( $parents as $parent ) {
    echo $parent->name;
    $args[\'parent\'] = $parent->term_id;
    if ( $children = get_terms( array( \'custom-tax\' ), $args ) ) {
        foreach ( $children as $child ) {
            echo $child->name;
        }
    }
}
您可以重写“如果($儿童…”如果您需要更多的递归,请将其转换为while循环。

SO网友:hamdirizal

可以使用以下函数递归创建层次结构:

function sort_hierarchical(array &$cats, array &$into, $parent_id = 0){

    foreach ($cats as $i => $cat) {
        if ($cat->parent == $parent_id) {
            $into[$cat->term_id] = $cat;
            unset($cats[$i]);
        }
    }

    foreach ($into as $top_cat) {
        $top_cat->children = array();
        sort_hierarchical($cats, $top_cat->children, $top_cat->term_id);
    }
}
使用方法如下:

$terms = get_terms(array(\'taxonomy\' => \'category\', \'hide_empty\' => false));
$cats = array();
sort_hierarchical($terms,$cats) ;

结束

相关推荐