如何以分层的方式获取单个帖子的类别

时间:2011-11-04 作者:2hamed

问题很简单
想象一下,我有一篇名为“单帖”的帖子,它位于“sub cat”类别内,它是“parent cat”的子类,而“parent cat”是“super cat”的子类。我需要做的是按照以下顺序显示帖子页面中的所有相关类别:

super-cat > parent-cat > sub-cat > Single Post

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

<?php 
    the_category( \' > \', \'multiple\', $post->ID); 
    echo \' > \';
    the_title();
?> 
当帖子只属于一个类别时,这一点是正确的。但是如果它在多个类别中,或者如果还选择了类别父项(在您的情况下,如果帖子也在超级猫和父猫中),那么它会显示这些类别两次<所以这可能不会对你有帮助。

我怀疑breadcrumb type plugins 也许已经解决了这个问题。

SO网友:tobidude

您需要首先对类别进行排序。

// get categories of post in sorted order
$categories = sortCategories(get_the_category());     

foreach($categories AS $category) {
    echo $category->name; // Plot category name
}
echo get_the_title(); // Plot post name

function sortCategories($categories) { // Sorting the category
    usort($categories, "cmpCategories");
    return $categories;
}

function cmpCategories($category_1,$category_2) { // Sort function
    foreach(get_categories(array("parent" => $category_1->cat_ID)) AS $sub) {
        if($category_2->cat_ID == $sub->cat_ID) return -1;
    }
    return 1;
}
我希望这有帮助。

SO网友:Roman

这应该可以做到:

$cats = get_the_category(); //retrieve cats for post

foreach ($cats as $cat) { //go thru to find child one - means cat which has specified parent id
    if ($cat->category_parent != 0) {
        $child = $cat->term_taxonomy_id;
    }
}
echo get_category_parents( $child, TRUE, \' > \' );
首先,我们得到特定帖子的类别,然后找到最后一个子项,然后使用get\\u category\\u parents,我们得到其父项的整个树。。。

SO网友:Macarthurval

以下是我的工作解决方案:

$categories = get_the_category();

$ordering = array();
foreach( $categories as $index => $cat) {
    $ordering[$cat->parent] = $index;
}

$ordered_string = "";
$i = 0;
while( $ordering[$i] !== null ){
    $ordered_string .= \'<li class="item-cat"><a href="\'.get_category_link( $categories[$ordering[$i]]->term_id ).\'">\'.$categories[$ordering[$i]]->name.\'</li>\';

    $i = $categories[$ordering[$i]]->term_id;
}

echo $ordered_string;
它回显为面包屑准备的字符串,只需稍加修改,您就可以将类别排序为数组。

SO网友:Tom

对我来说,这是一个老问题,但在谷歌上排名第一。我无法快速找到面包屑分类,它支持多个类别,所以我创建了一个并将其包装在ul 为便于造型:

// breadcrumb categorization
$cats = wp_get_post_categories( get_the_ID() );  //post id
foreach($cats as $c) {
    $ancestors = array_merge( array_reverse( get_ancestors( $c, \'category\' ) ), [$c] );
    echo \'<ul class="post-categories">\';
    foreach($ancestors as $id){
        echo \'<li><a href="\' . esc_url( get_category_link( $id) ) . \'">\' . get_cat_name( $id ) . \'</a></li>\';
    }
    echo \'</ul>\';
}

结束

相关推荐

为什么我看到任何用户都有Manage_Categories功能,但没有Manage_Tages功能?

使用“Members”或“Capability Manager”之类的插件,我看不到这样的插件manage_tags 能力。难道不应该有这样一个吗manage_categories?编辑:我想我知道了。manage\\u术语适用于所有分类法。没有一个专门用于标记,但如果我愿意,我可以创建一个。这可以让我设置一个只能编辑类别而不能编辑标记的角色,反之亦然。注:我的评分下降了。如果你对我的评价很低,请说明原因。谢谢