cat_is_ancestor_of()
是
WordPress 内核提供的用于判断
分类层级关系的
核心函数,其主要功能是检查一个分类是否为另一个分类的父分类或根分类。从逻辑上反推,也就能够判断当前分类是否为目标分类的子分类(包括直接子分类和孙子分类等所有层级的后代分类)。
该函数的语法结构如下:
cat_is_ancestor_of( int/object $cat1, int/object $cat2 )
其中两个参数的含义分别是:
$cat1
:需要被判断为 "祖先" 的分类,可以传入分类 ID(整数)或分类对象
$cat2
:需要被判断为 "后代" 的分类,同样支持分类 ID 或分类对象
函数的返回值为布尔类型,当$cat1
是$cat2
的祖先分类时返回true
,否则返回false
。
在实际开发中,我们经常需要将该函数与其他分类判断函数配合使用。比如下面的代码示例,实现了当当前分类是 ID 为 4 的分类本身,或者是其子孙分类时,显示特定导航菜单的功能:
<?php if (cat_is_ancestor_of(4, $cat) or is_category(4)) : ?>
<div id="music_subnav_menu">
<?php wp_nav_menu( array('menu' => 'Music' )); ?>
</div>
<?php endif; ?>
这段代码的逻辑是:当
cat_is_ancestor_of(4, $cat)
返回
true
(表示当前分类是 ID 为 4 的分类的后代),或者
is_category(4)
返回
true
(表示当前分类就是 ID 为 4 的分类)时,就加载 ID 为 "music_subnav_menu" 的
导航容器,并调用
wp_nav_menu()
函数显示名为 "Music" 的菜单。
这里的$cat
变量通常指代当前查询的分类对象,在分类归档页面中会自动生效。如果需要在其他页面使用该判断,可能需要先通过get_queried_object()
等函数获取目标分类对象。
扩展阅读
cat_is_ancestor_of()函数位于:wp-includes/category.php
相关函数:
- is_category()
- is_tax()
- is_tag()