Wordpress主页加盖了自定义类体类, - 为什么?

时间:2013-12-04 13:19:16

标签: php wordpress

我正在运行一个函数来插入适用于类别,页面和帖子的自定义body类,但是在首页(没有类别)上,仍然标记带有body类的页面最后一篇文章的类别值。

我在想某个类别值是否未正确重置?我怎么做?

感谢。

function dynamicbody() {
$category = get_the_category();
if ( $category[0]->category_nicename == cat1 ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'cat1'; return $classes; }
} else if ( $category[0]->category_nicename  == cat2 ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'cat2'; return $classes; }
} else if ( is_home() ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'home'; return $classes; }
}
}

add_action('wp_head', 'dynamicbody');

2 个答案:

答案 0 :(得分:0)

尝试下面的代码,首先检查一个类别是否存在

function dynamicbody() {
$category = get_the_category();
if($category)
{
if ( $category[0]->category_nicename == cat1 ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'cat1'; return $classes; }
} else if ( $category[0]->category_nicename  == cat2 ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'cat2'; return $classes; }
} else if ( is_home() ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'home'; return $classes; }
}
}
}

add_action('wp_head', 'dynamicbody');

答案 1 :(得分:0)

与使用is_home代码相比,您最好使用is_front_page,因此请更改以下行

else if ( is_home() ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'home'; return $classes; }
}

到这个

else if ( is_front_page() ) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'home'; return $classes; }
}

如果您在此之后仍遇到问题,我会将整个代码更改为此

function dynamicbody() {
 $category = get_the_category();
 if ( $category[0]->category_nicename == cat1 && !is_front_page()) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'cat1'; return $classes; }
 } else if ( $category[0]->category_nicename  == cat2 && !is_front_page()) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'cat2'; return $classes; }
 } else if ( is_front_page()) {
    add_filter('body_class','my_class_names');
    function my_class_names($classes) { $classes[] = 'home'; return $classes; }
 }
}

add_action('wp_head', 'dynamicbody');