检查当前类别是否有下级

时间:2013-03-28 作者:user29489

我需要告诉我查看的当前自定义分类法归档页面是否有子类别。我有一个情况,有很多自定义类别与儿童,该网站只是显示在最后一行帖子。否则,它应该显示到下一步的类别的链接。我找到了这个片段,但它似乎不适用于自定义分类法。

function category_has_children() {
global $wpdb;   
$term = get_queried_object();
$category_children_check = $wpdb->get_results(" SELECT * FROM wp_term_taxonomy WHERE parent = \'$term->term_id\' ");
    if ($category_children_check) {
        return true;
    } else {
       return false;
    }
}   

<?php
    if (!category_has_children()) {
        //use whatever loop or template part here to show the posts at the end of the line
   get_template_part(\'loop\', \'index\'); 
       }   

    else {
       // show your category index page here
    }
?>

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

可能有更好的方法,也可能没有更好的方法,但我会这样做:

$term = get_queried_object();

$children = get_terms( $term->taxonomy, array(
\'parent\'    => $term->term_id,
\'hide_empty\' => false
) );
// print_r($children); // uncomment to examine for debugging
if($children) { // get_terms will return false if tax does not exist or term wasn\'t found.
    // term has children
}
如果当前分类术语有子项get_terms 函数将返回数组,否则将返回false.

已在我的本地vanilla安装上测试并使用Custom Post Type UI 用于生成CPT的插件。

SO网友:simonthesorcerer

还有一种通用的WP可以通过get_term_children.

<?php
$children = get_term_children($termId, $taxonomyName);

if( empty( $children ) ) {
    //do something here
}

SO网友:Frits

假设您正在尝试筛选术语,以仅显示有子级或无子级的术语,您实际上可以使用childless 中的参数get_terms() 作用

$children = get_terms( 
    \'taxonomy\' => \'$taxonomy_slug\',
    \'hide_empty\' => false,
    \'childless\' => true
  ) 
);
这将输出一个没有子项的术语数组。

SO网友:ivan marchenko

这是迄今为止最干净的解决方案

$term = get_queried_object();
if($term->parent == 0 ){
  // do stuff;
}

结束

相关推荐