开发者

Add a custom class name to Wordpress body tag?

开发者 https://www.devze.com 2022-12-23 12:52 出处:网络
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?

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"> 


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.


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


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;
     
}


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';
}


Try this..

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


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


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

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号