我有一个名为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中所示。我试图实现的是列出任何帖子的所有过滤器,这些过滤器可能被分类在“新闻”下,并显示在“过滤器”下的水平列表中。当用户单击例如“世界新闻”以仅列出已选中“世界新闻”过滤器的帖子时,这将用于过滤帖子。
编辑帖子时管理区域中的当前类别/分类
最合适的回答,由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,
));