WordPress判断当前分类是否有子分类
原理分析
WordPress判断当前分类是否有子分类,是使用get_term_children( int $term_id, string $taxonomy) 函数进行判断。
category(分类)是一种 taxonomy,然后调用该函数,参数为该 category(分类)的 term_id 和 taxonomy,如果该分类含有子分类,那么该函数返回一个 term_id 数组,该数组中的元素是该分类的所有子分类的 term_id。而如果该分类没有子分类,则返回一个空的数组。
代码示例
<?php
global $cat; //获取当前分类
$cat_term_id = get_category($cat)->term_id; // 得到该分类的 term_id
$cat_taxonomy = get_category($cat)->taxonomy; // 得到当前分类的 taxonomy
if(sizeof(get_term_children($cat_term_id,$cat_taxonomy)) != 0) // 判断该函数返回的数组的长度
{
// 有子分类
}
else
{
// 没有子分类
}
?>
实际应用
通过判断当前分类是否有子分类,可以实现一级分类和二级子分类分别调用不同的模板。
<?php
//代码来源:学做网站论坛 https://www.xuewangzhan.net/
global $cat; //获取当前分类
$cat_term_id = get_category($cat)->term_id; // 得到该分类的 term_id
$cat_taxonomy = get_category($cat)->taxonomy; // 得到当前分类的 taxonomy
if(sizeof(get_term_children($cat_term_id,$cat_taxonomy)) != 0) // 判断该函数返回的数组的长度
{
include(TEMPLATEPATH . '/category-ffl.php');
}
else
{
include(TEMPLATEPATH . '/category-zfl.php');
}
?>
判断当前分类是不是某个分类的子分类或孙子分类
以下示例判断当前分类是否ID为4的分类的子分类,或是否为ID为4的分类。
<?php if (cat_is_ancestor_of(4, $cat) or is_category(4)) : ?>
……
<?php endif; ?>