为Wordpress body标签添加自定义类名?

时间:2010-03-17 21:32:47

标签: php wordpress

我想在我的主题的functions.php文件中放置一个指令,该文件将一个类名附加到wordpress body标签。是否有内置的API方法?

例如,我的身体标签代码是......

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

它会导致以下内容被写入body标签(取决于页面显示的上下文(页面,帖子,登录等)

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

根据我当时使用的儿童主题,我希望它是......

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

7 个答案:

答案 0 :(得分:24)

您可以使用body_class过滤器,如下所示:

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

add_filter('body_class', 'my_plugin_body_class');

虽然很明显,您的主题需要调用相应的body_class函数。

答案 1 :(得分:14)

你也可以直接在WP body_class函数中使用它,它会将字符串附加到body类中。

例如

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

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

答案 2 :(得分:1)

如果您在管理区域中尝试将类添加到body标记,请记住改为使用admin_body_class挂钩。请注意,它是一个稍微不同的过滤器,因为它传递的是一串类而不是一个数组,所以你的代码看起来像这样:

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

答案 3 :(得分:0)

试试这个..

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

答案 4 :(得分:0)

如果您只想基于页面模板添加类,请注意WP现在会自动将每个模板的类添加到body标签。

答案 5 :(得分:0)

要向过滤器添加更多类,只需添加另一行即可向数组添加另一个值:

add_filter('body_class','my_body_classes'); 函数my_body_classes($ classes){

$classes[] = 'class-name';
$classes[] = 'class-name-two';

return $classes;

}

答案 6 :(得分:-2)

只需编辑主题的header.php并在那里更改课程(手动或根据某些预设的逻辑规则)。