基于当前页面的动态主体类

时间:2014-07-28 作者:Dean Elliott

是否有方法将类添加到body_class 基于当前页面的函数?

例如,如果您在主页上,以及通常生成的类上<body> 元素也将具有frontmain-page 课程。如果你在“关于”页面上inner-pagesixcol 而不是类。

我(没有成功)试过这个;

function body_class_variants($variants) {

if (is_home() || is_front_page()) {
    $variants = \'front main-page\';
} else {
    $variants = \'inner-page sixcol\';
}
return $variants;

add_filter(\'body_class\',\'body_class_variants\');
它基于我用来将页面名称输出到body类的函数

function body_class_names($classes) {
global $post;
$name = $post->post_name;
$classes[] = $name;
return $classes;
}

add_filter(\'body_class\',\'body_class_names\');
但无济于事。

任何帮助都将不胜感激。

2 个回复
SO网友:gdaniel

我通过将其直接添加到body标签来实现您的目标。有关如何将类添加到内部页面的示例。

<body <?php if(!is_front_page()){body_class(\'interior-page\');}else{body_class();} ?>>

SO网友:Edd Smith

另一种选择可能是在页面加载时使用jQuery来完成。。。

$( document ).ready(function() {

    // get url and assign to variable
    url = $(location).attr(\'href\');

    // Split into an array if needs be
    splitUrl = url.split( \'/\' );

    // Log a segment if you want too
    splitUrl[3];

 if(splitUrl[3] == "about") {
    $("body").addClass("about")
 }

});
尽管我想补充一点,上面的gdaniels答案将是一个更好的选择,因为您将在php解析时处理更改。与jQuery一样,您在页面加载后操作dom(不太理想,开销更大)。

结束

相关推荐

If is_single in functions.php

我希望删除wpautop筛选器仅对我博客中的帖子起作用。因为在某些页面,我需要autop,而在某些页面,我需要它不在那里。我使用以下规则,这是在我的主题函数中。php:remove_filter( \'the_content\', \'wpautop\' ); 因为我只想在博客上看到它,所以我在考虑if语句,我在Wordpress中搜索了条件标记页面,发现我可以使用is\\u single。但它不起作用。这是我现在使用的代码。if(is_single() ){ remove_f