显示帖子的所有类别,当前类别除外

时间:2014-06-27 作者:Mark Devlin

我使用类别将我的帖子按时间顺序排列。例如,Jennifer Lopez

没有子类别。所有类别都在一个级别上。

最热门的帖子“想要戈麦斯”实际上有两类:詹妮弗·洛佩兹和塞琳娜·戈麦斯。我只想显示不在当前类别中的类别,因此在本例中,我希望在日期之后显示“SelinaGomez”。

一些帖子可能有三个或更多类别。例如,如果一篇帖子将“乔治·布什、迪克·切尼、巴拉克·奥巴马”作为类别,当我查看巴拉克·奥巴马类别时,我只会看到帖子上显示的乔治·布什、迪克·切尼,但如果我查看乔治·布什类别,我会看到奥巴马和切尼。

我需要类别名称链接到类别页面,即“Barack Obama”文本将链接到Barack Obama类别页面。

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

我不知道你是否解决了这个问题,但如果你解决了,看看你是如何解决的,那就太好了。

以下是我的方法:

第一件事是检索当前查看的类别页面的名称。你只想在分类页面上这样做,就像你说的那样。您可以使用get_queried_object 要获取类别名称,请在条件标记内is_category().

if(is_category()) { // only run this on category page
    $cc = get_queried_object();
    $exclude = $cc->cat_name; //get the name of current category page
}
接下来是检索帖子所属的类别get_the_category. 然后,您将从该列表中排除当前类别,也仅当您位于类别页面上时。

<?php
if(is_category()):// only run this on category page
    $cc = get_queried_object();
    $exclude = $cc->cat_name; //get the name of current category page
endif;

$categories = get_the_category();
foreach($categories as $category) :

    if(is_category() && $category->name==$exclude)
        continue; //skip current category from being displayed only on category pages

    $category_link = get_category_link( $category );
    echo \'<li><a href="\'.$category_link.\'">\'.$category->cat_name.\'</a></li>\';
endforeach;
?>

SO网友:Maninder2015

您可以尝试获取当前类别页面的类别,使用

single_cat_title( $prefix, $display );
关于这一点,你可以在法典中阅读here

这应该在循环外部使用。

之后,在查询获取类别以显示在页面中的位置,可以从提供给您的数组中排除当前类别

wp_get_object_terms( $object_ids, $taxonomies, $args )
然后它将不再显示类别页面的当前类别。

结束

相关推荐

Show post categories

我正在尝试显示一些面包屑的帖子类别。目前,我有:the_category(\' / \', \'multiple\'); 但出于某种原因,它两次声明了父类别(我只想parent > child):FASHION / DAILY FASHION CANDY / FASHION 它应该是:FASHION / DAILY FASHION CANDY 有人知道它为什么这样做,以及如何改变它吗?