首先,您需要检查类别是否有子级,如果有子级,那么我们可以显示一些内容。下面是一个有用的函数来检查这一点。
function category_has_children( $term_id = 0, $post_type = \'post\', $taxonomy = \'category\' ) {
$children = get_categories( array( \'child_of\' => $term_id, \'type\' => $post_type, \'taxonomy\' => $taxonomy ) );
return ( $children );
}
通过在
functions.php
文件,然后可以调用它并传递一些内容。它返回
true
该类别确实有子级或
false
如果没有
下面我假设$cat
你要去的地方get_category()
在您上面的问题中是父类别ID,如果不是,您需要以某种方式获取父类别ID(如果$cat
是对象,请检查$cat->parent
不是0) 如果
$cat
有父项我们知道它有子项,如果父项为0,我们必须检查它是否有子项。
<?php
$cat = get_queried_object();
$classes = "current_{$cat->slug}";
if( 0 == $cat->parent ) {
$classes .= ( category_has_children( $cat->term_id ) ? \' has_children\' : \'\' );
} else {
$parent = get_category( $cat->parent );
$classes = "parent_{$parent->slug} is_child";
$classes .= ( category_has_children( $cat->term_id ) ? \' has_children\' : \'\' );
}
?>
<a href="#" class="<?php echo $classes; ?>"><?php echo single_cat_title( \'\' ); ?></a>
首先,我们应用当前类别的一个类。
IF 当前类别没有父类别(是顶级类别),然后我们检查它是否有子类别,如果有,则应用一个类。
ELSE 当前的类别确实有父类,因此我们首先得到父类并添加2个类,一个是父类slug,另一个让我们知道它是子类。最后
IF 子类别也有子类别,添加类
has_children
ELSE 什么都不做。
<小时>get_queried_object()
Codex - 这将更深入地解释它,但基本上(从法典中提取)将获得一些通用信息:
如果您在一篇文章中,它将返回文章对象如果您在一个页面中,它将返回页面对象如果您在类别存档中,它将返回类别对象如果您在作者存档中,它将返回作者对象