从Get_the_Category中选取单父类别

时间:2013-10-24 作者:Ant Eksiler

我正在研究一个主题,为每个帖子显示一个类别。

然而,为了消除用户错误,我想从帖子类别中提取一个单亲类别。

以下是我目前的代码:

   function thb_DisplaySingleCategory($boxed = true, $id = false) { 
$categories = get_the_category();
$_id = (empty($id) ? $categories[0]->cat_ID : $id);
$_name = (empty($id) ? $categories[0]->cat_name : get_cat_name($id));

if ($boxed) {
    $thecategory = \'<a href="\'.get_category_link($_id).\'" class="boxed" title="\'.$_name.\'" style="background:\'.GetCategoryColor($_id).\'; ">\'.$_name.\'</a>\';
} else {
    $thecategory = \'<a href="\'.get_category_link($_id).\'" class="" title="\'.$_name.\'" style="color:\'.GetCategoryColor($_id).\'; ">\'.$_name.\'</a>\';
}


return $thecategory;
}
这给了我一个单一的类别,但它可以是儿童。

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

您可以检查类别\'parent\' arribute,如果是0 该类别是父类别。

我还注意到了代码中的一些内容:

通过时get_the_category 未使用,但仍会调用它get_the_category 假设函数在循环中被调用,但如果在任何情况下,get_the_category 不返回类别,在html中插入检索到的值之前,函数抛出错误,应使用esc_* 函数考虑到所有这些因素,我重新编写了函数,并添加了检查父类别:

function thb_DisplaySingleCategory($boxed = true, $id = false) { 
  if ( (int) $id ) {
    $cat = get_category($id);
    if ( ! empty($cat) ) {
       $backup = $cat->term_id;
       if ( $cat->parent == 0 ) $id = $cat->term_id;
    }
  }
  if ( empty($id) && in_the_loop() ) {
    $id = \'\';
    $categories = get_the_category();
    if ( empty( $categories ) ) return;
    while ( empty($id) && ! empty($categories) ) {
      $cat = array_shift($categories);
      if ( $cat->parent == 0 ) $id = $cat->term_id;
    }
  }
  // if no parent cat found, but a not-parent cat id passed to function use that
  if ( ! (int) $id && isset($backup) ) $id = $backup;
  if ( ! (int) $id ) return;
  $name = get_cat_name($id);
  $url = esc_url( get_category_link($id) );
  $wcolor = $boxed ? \'background\' : \'color\';
  $class = $boxed ? \' class="boxed"\' : \'\';
  $color = GetCategoryColor($id);
  $frmt = \'<a href="%s"%s title="%s" style="%s:%s;">%s</a>\';
  return sprintf( $frmt, $url, $class, esc_attr($name), $wcolor, $color, esc_html($name) );
}

结束

相关推荐

Grouping categories by genre

我的wordpress视频博客有几个类别。假设该类别可以分为几个类别,例如动作、恐怖、神秘,另一个类别属于动作、恐怖、浪漫如何将类别分为不同的类型?因为在最基本的结构中,我们将帖子分类。现在我想把类别分成不同的类别然后可以通过url(例如)在流派中显示类别http://www.domain.com/genre/actions 它将列出其中的所有类别。下面是一个具有此功能的示例站点http://www.anime44.com/anime-genre/Fantasy