如何在自定义分类法中对所有术语儿童进行分组?

时间:2020-05-18 作者:Milosh N.

我在这里有一个自定义分类的循环术语:

<?php 
    $terms = get_terms( array( 
       \'taxonomy\' => \'customtax\',
       \'hide_empty\' => false
    ) );

    $i = 0;                
    foreach( $terms as $term ) {
       echo "
        html block to display $term;
       ";
    $i++;
    };
?>
我的目标是将父分类法的所有术语分组到数组中,并逐一显示:

CAT PARENT NAME:

<儿童等

CAT PARENT NAME 2:

  • 儿童
  • 儿童
  • 儿童等
1 个回复
最合适的回答,由SO网友:simongcc 整理而成

下面是一个可能的解决方案。对于多个子级别,还有其他一些递归解决方案。根据你的问题,这是一个独生子女的水平。

该快速测试在使用默认主题和默认分类类别时被证明是有效的。

// first get the parent only $terms
// because of unknown sorting
$parent_terms = [];
$terms = get_terms( array( 
    \'taxonomy\' => \'category\', // change to your taxonomy name
    \'hide_empty\' => false,
    ) );

foreach( $terms as $term ) {
if( $term->parent == 0 ) {
    $parent_terms[] = $term;
}
};

// create level render
foreach( $parent_terms as $parent ) {
    $child_terms = get_terms( array( 
        \'taxonomy\' => \'category\',
        \'child_of\' => $parent->term_id,
        \'hide_empty\' => false,
        ) );

        echo \'<h4>\' . $parent->name . \'</h4>\';
        echo \'<ul>\';
        foreach( $child_terms as $child ) {
        echo \'<li>\' . $child->name . \'</li>\';
        }
        unset($child_terms); // avoid garbage for reuse
        echo \'</ul>\';
}

相关推荐

WP_SET_OBJECT_TERMS在没有芯片的情况下不更新数据库()

我已将自定义分类添加到媒体附件。在单独的帖子页面中,这些内容正在正确更新,并进行了一些调整以正确更新列数,我可以在管理/数据库中看到这些更改,没有任何问题。在媒体弹出窗口中,我可以更改分类法并使用edit_attachment 我能看到的行动wp_set_object terms 正在激发,我还可以看到它返回了一个数组,其中包含更新术语的正确ID:wp_set_object_terms($id, $cat_ids, \'attachment_category\', false); //return