2010-03-17 190 views
7

我想在我的主题的functions.php文件中添加一个指令,它将一个类名添加到wordpress body标签中。有没有一个内置的API方法呢?添加一个自定义类名到Wordpress body标签?

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

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

我不知道我明白你的问题 - 我只花了不期而遇的经典主题,和''标签输出直接在'header.php'文件中。你究竟在寻找一种API方法来存储和获取类名? – 2010-03-17 21:39:23

+0

嗨pekka,我已经将我的身体标记添加到问题以获得更好的说明。我只是想挖掘body_class()函数来添加我的子主题名称,以便我可以在主主题中使用条件CSS,该条件仅在特定的子主题处于活动状态时适用。 – 2010-03-17 21:45:19

回答

17

可以使用body_class过滤器,像这样:

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

add_filter('body_class', 'my_plugin_body_class'); 

虽然,很明显,你的主题需要调用相应的body_class功能。

+0

正是我在找的东西。感谢Richard! – 2010-03-17 21:56:37

+0

* NB *:确保您的主题body标签(通常在header.php中)调用函数body_class()'>' – Duncanmoo 2014-01-29 12:19:15

-1

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

1

如果您想在管理区域中添加类到身体标记时,请记住使用admin_body_class钩子。请注意,这是它的工作方式略有不同的过滤器,因为它通过一个类的字符串,而不是一个数组,所以你的代码应该是这样的:

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

试试这个..

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