Scott B
Scott B

Reputation: 40237

Add a custom class name to Wordpress body tag?

I'd like to place a directive in my theme's functions.php file which appends a classname to the wordpress body tag. Is there a built-in API method for this?

For example, my body tag code is...

<body <?php if(function_exists("body_class") && !is_404()){body_class();} else echo 'class="page default"'?>>

And it results in the following being written to the body tag (depending on the context in which the page is presented (page, post, logged-in, etc)

<body class="home blog logged-in"> 

Depending on the child theme I'm using at the time, I want it to be...

<body class="home blog logged-in mychildthemename"> 

Upvotes: 25

Views: 57077

Answers (7)

Arif Rahman
Arif Rahman

Reputation: 61

To add more classes to the filter, just add another line that adds another value in to the array:

add_filter( 'body_class','my_body_classes' );
function my_body_classes( $classes ) {
 
    $classes[] = 'class-name';
    $classes[] = 'class-name-two';
     
    return $classes;
     
}

Upvotes: 4

che
che

Reputation: 12273

If you just want to add class based on your page template note that WP now automatically adds per-template class to body tag.

Upvotes: 0

Arul M joseph
Arul M joseph

Reputation: 31

Try this..

    add_filter( 'body_class', 'custom_class' );
function custom_class( $classes ) {
    if ( !is_front_page() ) {
        $classes[] = 'example';
    }
    return $classes;
}

Upvotes: 0

mondrey
mondrey

Reputation: 456

You can also use it directly inside the WP body_class function which will append the string inside body class.

eg.

$class="custom-class";
<body <?php body_class($class); ?>>

http://codex.wordpress.org/Function_Reference/body_class

Upvotes: 20

Richard M
Richard M

Reputation: 14543

You can use the body_class filter, like so:

function my_plugin_body_class($classes) {
    $classes[] = 'foo';
    return $classes;
}

add_filter('body_class', 'my_plugin_body_class');

Although, obviously, your theme needs to call the corresponding body_class function.

Upvotes: 55

Tomas Buteler
Tomas Buteler

Reputation: 4137

In case you're trying to add classes to the body tag while in the Admin area, remember to use the admin_body_class hook instead. Note that it's a filter which works slightly different since it passes a string of classes rather than an array, so your code would look like this:

add_filter('admin_body_class', 'my_admin_body_class');
function my_admin_body_class($classes) {
    return $classes . ' my_class';
}

Upvotes: 2

code_burgar
code_burgar

Reputation: 12323

Simply edit your theme's header.php and change the class there (manually or according to some preset logic rules).

Upvotes: -5

Related Questions