我在网上搜索该答案。我使用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');
但据我所知,无法使其适用于按自定义分类排序的单个帖子。 :/>我不知道如何定制它。
甚至可能吗?
答案 0 :(得分:2)
您需要使用get_the_terms( $id, $taxonomy );
代替wp_get_post_categories();
来获取自定义分类条款ID。
您可以将分类法名称硬编码到功能中,或者从传递给$args
的{{1}}中获取。
最终代码:
wp_list_categories( $args );