循环中获取PARENT_CATEGORY类

时间:2015-02-20 作者:tibewww

我在试着parent_category 类在我的循环中。我试过这个:

<a href="#" class="<?php $parent = get_category($cat); echo $parent->category_nicename;?>">
    <?php single_cat_title(\'\') ?>
</a> 
还有很多其他的而不是$parent 但却无法做到这一点。如何显示父类别类?

1 个回复
最合适的回答,由SO网友:Howdy_McGee 整理而成

首先,您需要检查类别是否有子级,如果有子级,那么我们可以显示一些内容。下面是一个有用的函数来检查这一点。

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 - 这将更深入地解释它,但基本上(从法典中提取)将获得一些通用信息:

如果您在一篇文章中,它将返回文章对象如果您在一个页面中,它将返回页面对象如果您在类别存档中,它将返回类别对象如果您在作者存档中,它将返回作者对象

结束

相关推荐

Show all sub categories?

是否可以显示所有父猫的所有子/子类别?我有以下层次结构:父类别/税--子1--子2父类别/税2--子1--子2我想能够在一个模板上显示所有子类别,而不显示父类别。这可能吗?