问题描述
我需要说明当前我正在查看的自定义分类存档页面是否有子类别。我有一个情况,有很多自定义类别与孩子,网站只显示在行尾的帖子。否则,它应该显示一个到下一步的类别的链接。我找到了这个代码段,但它似乎不适用于自定义分类法。
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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。