获取特定类别的术语列表

时间:2017-04-20 作者:Niraj Pandey

我有一个名为News的类别和一个名为Filters的自定义分类法,这是一种分层分类法。

用户创建帖子时,会在“新闻”下选择子类别,并在“过滤器分类法”下选择子过滤器。

现在,当用户导航到/新闻时,我尝试列出所有“子类别”和“过滤器”。

列出“新闻”类别的子类别很容易。但我似乎无法找到一种方法来列出分类“过滤器”的所有“子过滤器”,这些过滤器仅限于“新闻”类别。

下面是我用来获取分类新闻子类别列表的代码:

function get_child_categories()
{
    if (is_category()) {
        $thiscat = get_category(get_query_var(\'cat\'));
        $catid = $thiscat->cat_ID;
        $args = array(\'parent\' => $catid);
        $categories = get_categories($args);

        return $categories;
    }

    return false;
}
我希望有一个类似的函数,可以列出分类“过滤器”的所有术语,但仅限于“新闻”类别。以下是我试图实现的目标的屏幕截图:

在下面的屏幕截图中,“/新闻”与管理区域中的“新闻”类别相关。因此,如果用户转到/新闻,前端应列出“新闻”类别的所有帖子。

该页面还应列出“新闻”类别下的所有子类别。正如您可以从子类别的水平列表中看到的那样,这是可以完成的。

现在,用户还可以选择一个过滤器,如管理UI中所示。我试图实现的是列出任何帖子的所有过滤器,这些过滤器可能被分类在“新闻”下,并显示在“过滤器”下的水平列表中。当用户单击例如“世界新闻”以仅列出已选中“世界新闻”过滤器的帖子时,这将用于过滤帖子。

enter image description here

编辑帖子时管理区域中的当前类别/分类

enter image description here

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

下面的代码将完成此操作。请将下面代码中的“过滤器”文本更改为您设置的任何过滤器分类名称。

if(is_category() ){

    $thiscat = get_queried_object_id(); 
    $filter_tax = array();
    $args = array( \'category\' => $thiscat );
    $lastposts = get_posts( $args );

    foreach ( $lastposts as $post ){
        setup_postdata( $post );
        $terms = get_the_terms( $post->ID, \'filter\' ); // Change the taxonomy name here

        if ( $terms && ! is_wp_error( $terms ) ){

         foreach ( $terms as $term ) {
            $filter_tax[] = $term;
         }

        }
    }
    wp_reset_postdata();

    if( !empty($filter_tax) ){
        print_r($filter_tax);
    } else {
        echo \'No filter set.\';
    }

}

SO网友:Nate

我不确定我是否理解你的要求,但我希望这能帮助你-

Getting all sub-categories of current category

$args = array(\'parent\' => 17); // Or get queried object for ID
$categories = get_categories( $args );

Getting all sub-categories from all levels

$args = array(\'child_of\' => 17); // Or get queried object for ID
$categories = get_categories( $args );

Getting all categories under custom taxonomy

$terms = get_terms(array(
    \'taxonomy\' => \'post_tag\',
    \'hide_empty\' => false,
));

相关推荐

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

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