根据类别更改每个帖子的背景

时间:2015-09-08 作者:Social Monster

是否可以根据每个帖子的类别更改其背景颜色?

我试过了-

body.term-adb {
background-color: #000;
但这只会更改类别页面,而不会更改标记有该类别的各个帖子的背景。

我哪里做错了?

这是page 我目前正在

3 个回复
SO网友:Curtis

body\\u class()是控制这些类的对象,它不包括单个帖子中的类别。这就是为什么一旦你点击一篇文章,CSS就不起作用了。

不过,我确实找到了一个可能有用的函数。尝试将其放置在函数中。php。这会将当前帖子的类别添加回body类。一旦类可用,您应该能够更轻松地设置页面样式。如果body标记仍然不起作用,则将其上的类加倍,并确保它与CSS匹配。

add_filter(\'body_class\',\'add_category_to_single\');
function add_category_to_single($classes) {
    if (is_single() ) {
        global $post;
        foreach((get_the_category($post->ID)) as $category) {
            $classes[] = \'category-\'.$category->slug;
        }
    }
    return $classes;
}

References:

  1. https://codex.wordpress.org/Function_Reference/body_class

SO网友:kaiser

当然这是可能的。查看的输出

<body <?php body_class( $additional_classes ); ?>>
这里有很多与分类法相关的类:

  • tax-portfolio_category <<;tax-{$taxonomy_name}
  • term-adb <<;term-{$term_name}
  • term-22 <<;term-{$term_id}
SO网友:Dev

post类包含该类别,因此您可以使用该类别或使用post\\u类筛选器再次添加该类别

$terms = wp_get_post_terms( get_the_ID(), \'category\', array( \'fields\' => \'slugs\' ) );
    
$category_slug = implode(\' \', $terms);

$attributes[\'class\'] .= \' \'. $category_slug;
    
return $attributes;