I am using body_class(); to style different sections of a wordpress site by their body class. Page styles descend from .page-template, blog styles descend from .single-post and/or .blog etc.

I have created a custom post type "Products" for the products section of the site and want to style this section specifically using it's body class, but unfortunately body_class(); is also giving the custom post type single pages the class .blog which is making many of the blog styles override the product styles- very frustrating.

Is there a way to take the "blog" class away for my custom post type single pages?

Thanks!

link|improve this question

33% accept rate
feedback

1 Answer

You can use body_class filter to check if you are on your custom post type, and if so then just remove the blog class like this:

 function remove_blog_from_cpt_classes($classes, $class){
    global $post;
    if ($post->post_type != "products"){
        return $classes;
    }else{
        foreach($classes as &$str){
            if(strpos($str, "blog") > -1){
                $str = "";
            }
        }
    }
    return $classes;
}
add_filter("body_class", "remove_blog_from_cpt_classes", 10, 2);

Hope this helps

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.