问题描述

我需要说明当前我正在查看的自定义分类存档页面是否有子类别。我有一个情况,有很多自定义类别与孩子,网站只显示在行尾的帖子。否则,它应该显示一个到下一步的类别的链接。我找到了这个代码段,但它似乎不适用于自定义分类法。

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
    }
?>

最佳解决方案

这可能是也可能不是更好的方法,但是我将如何做到这一点:

$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

测试和工作在我的本地香草安装与 Custom Post Type UI 插件用于 CPT 生成。

次佳解决方案

通过 get_term_children 也有通用的 WP 可能性。

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

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。