当我使用自定义分类法时,在wp_list_categories上添加current_cat类

时间:2013-04-01 13:41:47

标签: wordpress taxonomy wp-list-categories

我在网上搜索该答案。我使用wp_list_categories创建一个带有自定义分类的子菜单,它运行良好,并在浏览这些类别时放入current-cat。

问题是,当我使用此菜单浏览单个帖子时,突出显示不再有效。

对于该网站的博客部分,我使用以下代码突出显示wp_list_categories()上的当前类别:

function sgr_show_current_cat_on_single($output) {

global $post;

if( is_single() ) {

$categories = wp_get_post_categories($post->ID);

foreach( $categories as $catid ) {
  $cat = get_category($catid);
  if(preg_match('#cat-item-' . $cat->cat_ID . '#', $output)) {
    $output = str_replace('cat-item-'.$cat->cat_ID, 'cat-item-'.$cat->cat_ID . ' current-cat', $output);
  }

}

}
 return $output;
}

add_filter('wp_list_categories', 'sgr_show_current_cat_on_single');

但据我所知,无法使其适用于按自定义分类排序的单个帖子。 :/>我不知道如何定制它。

甚至可能吗?

1 个答案:

答案 0 :(得分:2)

您需要使用get_the_terms( $id, $taxonomy );代替wp_get_post_categories();来获取自定义分类条款ID。

您可以将分类法名称硬编码到功能中,或者从传递给$args的{​​{1}}中获取。

最终代码:

wp_list_categories( $args );