根据其父类别对子类别ID进行分组

时间:2015-12-01 作者:hkc

我有子类别的ID,11,14,21,35,38,39, 其中,这些都是其主要类别中的各种子类别:

父类别1 具有:11,142 具有:213 具有:35,38,39我如何按照孩子的父类别对孩子ID进行分组,如下所示?

array(
    1 => array ( 11,14 ),
    2 => array ( 21 ),
    3 => array ( 35,38,39 )
)

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

快速拍摄如下:

$categories        = [ ];
$parent_categories = get_categories( [ \'parent\' => 0 ] );

foreach ( $parent_categories as $parent_category ) {
    $id                = $parent_category->term_id;
    $categories[ $id ] = wp_list_pluck( get_categories( [ \'parent\' => $id ] ), \'term_id\' );
}
重要的一点是parent 参数,该参数限制检索到的直接子级(0的父级是顶级)。

根据这些结果的多少,最好先检索所有这些结果,然后从单个结果集中重新排列。

SO网友:Reza Mamun

我和你有完全相同的要求。下面的代码是我的解决方案:

$termArr = array();
$termIds = array_filter(explode(\',\',\'11,14,21,35,38,39\'),\'is_numeric\');
if( !empty($termIds) ){
    $terms = get_terms(array(
        \'taxonomy\' => \'my_taxonomy\',
        \'include\' => $termIds
    ));

    foreach($terms as $t){
        if( !isset($termArr[$t->parent]) )
            $termArr[$t->parent] = array();
        $termArr[$t->parent][] = $t->term_id;
    }

    print_r($termArr); //===> This is the array which you need :)
}

相关推荐

显示所有类别而不是分配给特定帖子的类别的GET_TERMS

我的自定义帖子类型中有3篇帖子(\'careers\'). 我注册了自定义分类法(\'career_categories\').我创建了3个职位,其中两个职位属于“全职”,一个职位属于“兼职”。我在循环中使用以下代码:$terms = get_terms( \'career_categories\', array( \'hide_empty\' => true, ) ); $html_out .= \'<td class=\"column-\'. $col++ .\'\"&g