wordpress snippets last updated   : April 22, 2014
we now have 631 snippets

Add custom body class for specific pages

wordpress snippet

Adding this snippet to the functions.php of your wordpress theme will let you add a custom body class for specific pages. Add the second snippet to the header.php template replacing your default html body tag.

snippet :  PHPcopy
add_filter( 'body_class', 'my_neat_body_class');
function my_neat_body_class( $classes ) {
     if ( is_page(7) || is_category(5) || is_tag('neat') )
          $classes[] = 'neat-stuff';
     return $classes;
source →
snippet :  PHPcopy
<body <?php body_class(); ?>>
source →
  • http://www.squareonemd.co.uk Elliott the web design guy

    Now that’s a very neat snippet for custom page layouts – awesome!

    • http://wpsnipp.com Kevin Chard

      Cool glad you like it!

  • http://twitter.com/jamusreynolds Jamie Reynolds

    Very handy. Can something simular be done using page parent?

    • http://wpsnipp.com Kevin Chard

      Sure you could do something like this, however if your pages only have a single parent the body_class will already add “page-parent” class to the body. This is only a problem if you have many child pages as each sub page may also be a parent page. What is it that you are trying to do?

  • Anonymous

    Is there anything you need to do after you add the class? I’m not seeing any way to add a custom class for a page…

    • http://wpsnipp.com Kevin Chard

      Hi Trevor,
      Yes you will need to add the body_class(); function within the body tag I updated the snippet to avoid confusion.

  • Jhardy1974

    you this be combined with the other body class snippet so if the pages are not specified they default to have their own page as the class?

    • http://wpsnipp.com Kevin Chard

      Should be able to just do

           if ( is_page(7) || is_category(5) || is_tag(‘neat’) ){
                $classes[] = ‘neat-stuff’;          }else{
                $classes[] = ‘other-class’;


  • Scott Dixon

    Thanks for this, I wanted a shorter body class name for a custom page template, using is_page_template (‘template-name.php’) and this worked perfect.

jqsnipp.com | we just launched jquery snippets website