Custom post type and body_class: Remove “blog” class

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.

Read More

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

Thanks!

Related posts

Leave a Reply

1 comment

  1. 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