Single.php活动类别类

时间:2013-08-16 作者:Howdy_McGee

目前默认情况下(我相信),当你单身时。php、Wordpress不会像查看页面或类别归档文件一样,在查看单个帖子的博客类别中添加“活动”类。归档文件中也没有此项(如果您列出了它们)。有没有办法在列出帖子父类别后将其添加到“活动”类别?

我以标准方式列出我的类别和归档:

<div class="menu-item">
        <h4 class="title"><a href="<?php echo get_permalink(15); ?>">Categories</a></h4>
        <ul>
            <?php
                wp_list_categories(array(
                    \'title_li\'  =>  \'\',
                    \'echo\'      =>  1
                ));

            ?>
        </ul>
    </div>
    <div class="menu-item">
        <h4 class="title"><a href="<?php echo get_permalink(15); ?>">Archives</a></h4>
        <ul>
            <?php wp_get_archives(\'type=monthly&limit=12\'); ?>
        </ul>
    </div>
只是为了澄清;当您在类别中时,它将添加类current-cat 但是当你在一篇单独的帖子上时,它不会向类别中添加任何类型的类来表示该帖子属于它。

这是我正在使用的permalink结构(如果重要的话):

/blog/%year%/%monthnum%/%day%/%postname%/

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

正如vancoder所指出的,一篇文章可以有多个类别,下面的代码突出显示了每个类别以及该文章的当前月份。添加到主题的functions.php.

  // Generate active class for categories when viewing single posts
  // Props to Sam Nabi http://samnabi.com/blog/highlight-the-current-category-for-single-posts-in-wordpress
  function singlePostActiveCat ($CatText) {
     global $post;
     if (is_singular()) {
       $categories = wp_get_post_categories($post->ID);
       foreach ($categories as $category_id) {
        $category = get_category($category_id);
        $CatText = preg_replace(
           "/class=\\"(.*)\\"><a ([^<>]*)>$category->name<\\/a>/",
           \' class="$1 active"><a $2>\' . $category->name . \'</a>\',
        $CatText);
        }
     }
  return $CatText;
  }
  add_filter(\'wp_list_categories\', \'singlePostActiveCat\');

  // Generate active class for archives when viewing single posts
  // Props to Joshua Abenazer http://wordpress.stackexchange.com/questions/62509/wp-get-archives-get-css-selector-for-current-month
  function singlePostActiveMonth( $ArchiveText ) {
     if (is_singular()){
        $current_month = get_the_date("F Y");
        if ( preg_match(\'/\'.$current_month.\'/i\', $ArchiveText ) )
           $ArchiveText = preg_replace(\'/<li>/i\', \'<li class="active">\', $ArchiveText );
     }
     return $ArchiveText;
  }
  add_filter( \'get_archives_link\', \'singlePostActiveMonth\' );
在我的本地开发副本WP上进行了测试,似乎有效。

结束

相关推荐

Get_the_Categories筛选器返回空数组

我正在开发一个主题,使用get_the_category_list() 函数(在category template.php中)。通过检查其代码,此函数调用get_the_category() 函数(位于category template.php中),该函数应用get_the_categories 末端过滤器:return apply_filters( \'get_the_categories\', $categories ); 出于某种奇怪的原因,此过滤器返回一个空数组。如果我将此行替换为:re