如何获取给定帖子的子类别

时间:2011-10-20 作者:Y2ok

如何获取任意帖子的子类别名称?

例如,我得到了slug类-“motorbikes”和它的子类别。所以我需要得到每个帖子的子类别名称,这些名称位于slug motorbikes类别内。Y2ok

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

要获取给定父类别slug的子类别,请使用以下组合get_category_by_slug()get_categories().

后一个函数将返回与指定查询参数数组匹配的类别对象数组;前者将根据类别的slug返回其ID。

例如:

<?php
$motorbike_child_cat_args = array(
    \'child_of\' => get_category_by_slug( \'motorbikes\' )
);

$motorbike_child_cats = get_categories( $motorbike_child_cat_args );
?>
然后,可以对类别对象数组执行任何操作。例如,要获取子类别名称的数组,请执行以下操作:

<?php
$motorbike_child_cat_names = array();
foreach ( $motorbike_child_cats as $child_cat ) {
    $motorbike_child_cat_names[] = $child_cat->name;
}
?>
真的,在那一点上,你该怎么处理它取决于你自己。

EDIT

如果需要获取任意帖子的子类别,则可以使用get_the_category().

如果您在循环中,只需调用get_the_category(); 如果您在循环之外,则需要将Post ID传递给调用:get_the_category( $id ).

因此,例如,要构建当前帖子的子类别(无论父类别)的名称数组,请执行以下操作:

<?php
$my_post_categories = get_the_category();

$my_post_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
    if ( 0 != $post_cat->category_parent ) {
        $my_post_child_cats[] = $post_cat->cat_name;
    }
}
?>
或者,例如,构建当前帖子“motorbike”子类别的名称数组:

<?php
$my_post_categories = get_the_category();

$motorbikes_child_cats = array();
foreach ( $my_post_categories as $post_cat ) {
    if ( \'motorbikes\' == $post_cat->category_parent ) {
        $motorbikes_child_cats[] = $post_cat->cat_name;
    }
}
?>
这就是你想要的吗?

EDIT 2

如果您只需要获取帖子的所有类别:

<?php
$all_post_categories = get_the_category();

$my_post_cats = array();
foreach ( $my_post_categories as $post_cat ) {
    $my_post_cats[] = $post_cat->cat_name;
}
?>
那会给你all 当前职位的类别。我不知道怎么做motorbikes 将缓动因子分类到这个问题中。

SO网友:Sathiyamoorthy
$categories = wp_get_post_categories( get_the_ID(), array(\'fields\' => \'ids\') );

$arguments = array(
    \'taxonomy\'    => \'category\',
    \'childless\'   => true,
    \'include\'     => $categories,
);

$selected_category = get_terms( $arguments );
结束

相关推荐

当使用GET_CATEGORIES或类似工具时,是否也可以过滤包含某些标记的结果?

get_categories() 默认情况下,相关函数不会返回空类别-没有帖子的类别。我想,既然可能有一些底层代码检查帖子数量,那么是否可以额外过滤该列表,使其仅包括那些本身包含与特定标记相关联的帖子的类别?或者有没有一种简单的替代方法来获取这些信息?例如,如果我有一些贴子带有“audio”标签,我想用一种方法get_categories() (或类似结果),但仅检索包含带有“音频”标记的帖子的类别列表。我知道我可能必须直接使用标签ID。我只是在寻找“最好的”,或最合适的方式来做到这一点。谢谢