如何显示一个帖子的所有兄弟类别?

时间:2015-05-27 作者:Justin Munce

我想获得我的帖子中最深级别(4或5级)的兄弟类别列表,例如:

关于南苏丹的帖子(面包屑=世界、非洲、东非、南苏丹)

显示南苏丹的所有子类别。

然后,我希望能够做同样的事情,但与东非(1级以上)。

这在WordPress上可能吗。我们两个人已经研究这个问题好几天了。

如果有人能做到这一点,除了我真诚的感谢和赞赏之外,我还可以在他们的愿望清单上提供一些高达20美元左右的东西。

谢谢大家

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

是的,你可以。这里帮助您的功能是get_term(). 此函数的返回为您提供了parent. 使用此ID,您可以获得父分类法(只要它与类别一样具有层次结构)。

注意

要使此功能正常工作,您必须只为您的帖子选择最下面的类别,例如“南苏丹”。如果还选择了父类别,则函数无法知道要使用哪一个类别(或者只是需要更多的处理)。

如果使用多个类别,同样的问题也会出现——要么得到多个面包屑的输出,要么只有一个,可能是错误的。

单个底部类别的脚本可能是这样的,并且应该告诉您需要做什么:

更新我增强了脚本的功能,以确保多类别兼容性。它现在搜索所有设置的类别,找到类别祖先最多的类别,并打印出包含所有类别链接的面包屑。

$seperator = \' | \'; // Change to whatever you need
$categories = get_the_category( get_the_ID() ); // get the categories for your post

// check if categories are set
if ( is_array( $categories ) && count( $categories ) > 0 ) {

    $mostancestors = 0; //controlvariable
    $foundcategory; //save the category

    // Loop through the categories
    foreach( $categories as $thiscategory ) {

        //check how many ancestors the current category has
        $thisancestors = howManyAncestors( $thiscategory );
        // if more than the previous record holder
        if ( $thisancestors > $mostancestors ) {
            $mostancestors = $thisancestors; //increase the controlvariable to the Amount calculated
            $foundcategory = $thiscategory; //Set the found category to the one with more ancestors
        }
    }

    // get the parent of the found category
    $parent = get_term( $foundcategory->parent, \'category\' );

    // loop to the next parent as long as it is different than the current one and exists
    while ( $parent->term_id != $foundcategory->term_id && !is_wp_error( $parent ) && $parent->term_id != 0 ) {

        // Add the Link for each parent in front of the existing Links
        $categorylinks = \'<a href="\' . get_category_link( $parent->term_id ) . \'" title="\' . esc_attr( sprintf( __( "View all posts in %s" ), $parent->name ) ) . \'">\' . $parent->name . \'</a>\' . $seperator . $categorylinks;
        // get the next parent
        $parent = get_term( $parent->parent, \'category\' );

    }

    // the actual category that is set, without the final Seperator
    $categorylinks.= \'<a href="\' . get_category_link( $foundcategory->term_id ) . \'" title="\' . esc_attr( sprintf( __( "View all posts in %s" ), $foundcategory->name ) ) . \'">\' . $foundcategory->name . \'</a>\';

    echo $categorylinks;

}

function howManyAncestors( $term ) {
    $counter = 0;
    $parent = get_term( $term->parent, \'category\' );
    while ( $parent->term_id != $thiscategory->term_id && !is_wp_error( $parent ) && $parent->term_id != 0 ) {
        $counter++;
        $parent = get_term( $parent->parent, \'category\' );
    }
    return $counter;
}

结束

相关推荐

Display Count of posts

我正在尝试创建一个计数器,该计数器将显示一个类别页面的页码,后跟页面计数,其中每页有一篇文章。例如,如果一个类别中有10个职位:1/10, 2/10, 等等。我能够使用@PieterGoosen提供的代码显示页码(How to use global post counter in the loop?) 但我很难弄清楚如何显示页数。