站长朋友们在使用WordPress建站的过程中,通常会通过body_class()方法给不同的页面定义不同的样式。具体的方法和原理如下:
就是在模板文件夹的header.php文件中的body标签中,加入body_class()方法输出class:
1 | <body <?php body_class(); ?>> |
输出的结构如下:
1 | <body class="page page-id-2 page-parent page-template-default logged-in"> |
根据不同的class添加不同的样式:
1 2 3 4 5 6 7 8 9 | .page { /* styles for all posts within the page class */ } .page-id-2 { /* styles for only page ID number 2 */ } .logged-in { /* styles for all pageviews when the user is logged in */ } |
但是在具体的文章页面中,当我们想给不同分类的文章添加不同的样式的时候,默认情况下,body_class()在single页面中并不能输出分类的信息,如下:
1 | single single-post postid-90 single-format-standard logged-in admin-bar customize-support |
我们希望给不同分类的文章加入 category-cat_name 。这篇WordPress教程里,我们就来介绍一下具体的方法。
切换到主题目录,打开functions.php文件,加入以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 | add_filter('body_class','add_category_to_single'); function add_category_to_single($classes, $class) { if (is_single() ) { global $post; foreach((get_the_category($post->ID)) as $category) { // add category slug to the $classes array $classes[] = 'category-'.$category->category_nicename; } } // return the $classes array return $classes; } |
修改以后,输出如下:
1 | single single-post postid-90 single-format-standard logged-in admin-bar category-faqs customize-support |
这是一篇FAQS分类下的文章,所以添加了 category-faqs 这个class,其他分类的文章中会输出其他分类的class。
感兴趣的朋友可以测试一下。