目前默认情况下(我相信),当你单身时。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%/
最合适的回答,由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上进行了测试,似乎有效。