显示子类别名称/链接,而不是父类别

时间:2013-10-15 作者:Jon

现在,这段代码显示了一篇文章的子类别(如果有)。但它也显示父类别(因此父类别和子类别同时显示)。是否有办法修改此代码,以便如果一篇文章位于子类别中,它只显示这些子类别并隐藏父类别?如果它只在父类别中,它会显示父类别?非常感谢。

    <?php $category_separator = "";
foreach((get_the_category()) as $childcat) {
     $parentcat = $childcat->term_id;
     if( $parentcat != 0 ) echo \'<span class="\' . get_cat_name($parentcat) .\'"><a href="\' . get_category_link($parentcat) . \'">\' .get_cat_name($parentcat) .\'</a></span>\';
     else echo \'\' . $category_separator . \'<span class="\'. $childcat->cat_name .\'"><a href="\' . get_category_link($childcat) .\'">\' . $childcat->cat_name . \'</a></span>\';
    $category_separator = " / ";
}
?>

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

一旦您无法知道get_the_category, 我建议遍历类别并填充两个数组,一个用于父级,一个用于子级。之后,如果父数组为空,则显示子数组,否则显示父数组:

$categories = get_the_category();
if ( ! empty($categories) ) {
  $parents = array();
  $children = array();
  foreach( get_the_category() as $cat ) {
    if ( $cat->parent == 0 ) {
      $parents[] = $cat;
    } else {
      $children[] = $cat;
    }
  }
  $toshow = ! empty($children) ? $children : $parents;
  $sep = \'\';
  if ( ! empty($toshow) ) { foreach( $toshow as $cat ) {
    echo $sep;
    echo \'<span class="\' . $cat->name .\'">\';
    echo \'<a href="\' . get_category_link($cat->term_id) . \'">\' . $cat->name . \'</a></span>\';
    $sep = \' / \';
  } }
}

结束

相关推荐

W3总缓存缩减-有什么方法可以不使用php吗?

我使用nginx、php5 fpm和fastcgi\\u缓存。W3TC小型化似乎已经足够好了,但每个include都指向“minify.php?”。我希望即使php和mysql服务器宕机,也能保持我的站点正常运行——在我的页面的缓存(过时)版本上生存。有没有办法不接触php来服务小型资产?我的意思是,它已经缩小了,可能已经被压缩了,为什么它需要通过呢。php?我错过了什么?我的链接如下所示:<link rel=\"stylesheet\" type=\"text/css\" href=\"http: