Wordpress主页上印有自定义类别正文类,为什么


Wordpress homepage stamped with a custom category body class, - why?

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

我在想,不知何故,类别值没有被正确重置?我该怎么做?

谢谢。

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

与其使用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');

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

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