如何在最后一项上没有链接的情况下获取Get_Category_Parents()Badcrumbs跟踪

时间:2012-02-16 作者:Simon

只是一个问题:我想使用get_category_parents() 在类别存档页面上显示面包屑,但在当前显示的类别上没有链接(SEO目的,因为他们说那是指向自身的链接。我不确定搜索引擎是否愚蠢,但无论如何)。

像这样:

link\\u主页»;链接_cat1»;link\\u subcat1»;nolink\\U子分类1

get_category_parents() 非常适合这样做,但只有两种选择:有链接和无链接。

我想要的是最后一个项目的链接。

函数返回的是字符串,而不是对象或数组,因此我无法删除最后一项。

我可以通过搜索» 分隔符并以这种方式删除最后一个链接,但我对正则表达式非常不好(如果您知道这方面的好引用,我很感兴趣!)。

我知道显而易见的答案是使用get_ancestors() 和一个循环,然后只需在当前类别名称后添加。

但我想知道有没有更简单的方法get_category_parents() 不向最后一个项目添加链接?

感谢您提供的任何见解。

RegardsSimon公司

4 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

我不认为这比凯撒的选择更好/更坏,只是不同而已。为什么不使用get_category_parents 然后(可选)附加当前类别?

我尚未对此进行测试,但类似于以下内容的内容应该可以工作:

$cat_id=7;//current category\'s ID (e.g. 7)
$separator=\'»\';//The separator to use
$category = get_category($cat_id);//$category is the current category object
$parent_id = $category[0]->category_parent //category\'s parent ID
$ancestors = get_category_parents($parent_id, true, $separator);
然后可以选择添加当前类别的名称:

 if($ancestors){
      $breadcrumb = $ancestors.$separator.\' <span class="active-cat">\'.single_cat_title().\'</span>\';
 }else{
      $breadcrumb = \'<span class="active-cat">\'.single_cat_title().\'</span>\';
 }
     echo $breadcrumb;
编辑:事实证明,WordPress几乎就是这样产生输出的:get_category_parents 递归调用自身(see here), 因此,使用这种方法基本上就是“提前停止”,并手动完成。然而,没有任何挂钩可以达到这种效果。

SO网友:kaiser

如果您深入了解php上的字符串/数组处理,那么使用本机php函数并不难。网

// 1. Calls the category parents including their links
// 2. Explodes the string to an array with limit -1 to avoid outputting the last element
// 3. Loops through the array and echos the breadcrumbs
// 3.a Shows the » only after the first breadcrumb
foreach( explode( \'//\', get_category_parents( $cat, true, \'//\' ), -1 ) as $index => $breadcrumb )
    echo $index <= 0 ? $breadcrumb : " &raquo; {$breadcrumb}";
// 4. Echo the current category with a leading »
echo \' &raquo; <span class="breadcrumb-active-cat">\'.single_cat_title().\'</span>\';
注:未测试

SO网友:sariDon

虽然我的思路有点陈旧,但我得出了以下结论:

$catpars= get_category_parents($cat_id, true, \' &raquo; \');
$catpars= preg_replace(\'/\\W\\w+\\s*(\\W*)$/\', \'\', $catpars);

SO网友:Prafulla Kumar Sahu

在类别页面中,您也可以这样做,它将从面包屑中保留当前类别,并显示其所有父类别。

   echo get_category_parents( get_queried_object()->parent, true, \' &rarr; \' ); 

结束

相关推荐

Breadcrumbs - get the author?

我有自己的函数breadcrumbs()。在其中,我调用is\\u author()来确定我是否在作者页面上。如果是真的,我想知道我在哪个作者的页面上。我尝试了\\u author(),但没有结果。我还查阅了WP codex。有人能帮忙吗?