wordpress自带有 body_class 这么一个函数,可以快捷的给body添加内置的class名;而我们在开发wordpress主题时,会遇到需要给body添加额外的class,出现这种情况的时候,就不能直接通过body_class这个函数来直接添加了。那该怎么办呢?


其实我们可以通过add_filter来给body_class挂载一些内容:

/*body添加class*/  
function wd_custom_body_class($classes){  
    if(is_home() && emptyempty(wd_get_slider_background())){  
        array_push($classes, "top-bar-visible");  
    }  
    if(is_page() || is_single()){  
        global $post;  
        if(get_post_meta($post->ID, 'postheader', true) == "0" || get_post_meta($post->ID, 'postheader', true)== ""){  
            array_push($classes, "top-bar-visible");  
        }  
        if(get_post_meta($post->ID, 'pagelayout', true) == "0"){  
            array_push($classes, "page-layout-right-sidebar");  
        }  
        if(get_post_meta($post->ID, 'pagelayout', true) == "1"){  
            array_push($classes, "page-layout-left-sidebar");  
        }  
        if(get_post_meta($post->ID, 'pagelayout', true) == "2"){  
            array_push($classes, "page-layout-full-width");  
        }  
        if(get_post_meta($post->ID, 'pagelayout', true) == ""){  
            if(av('layout_sidebar','0') == '1'){  
                array_push($classes, "page-layout-left-sidebar");  
            }else{  
                array_push($classes, "page-layout-right-sidebar");  
            }  
        }  
    }  
    if(is_home()){  
        if(av('layout_sidebar','0') == '1'){  
            array_push($classes, "page-layout-left-sidebar");  
        }else{  
            array_push($classes, "page-layout-right-sidebar");  
        }  
    }  
    return $classes;  
}  
add_filter('body_class', 'wd_custom_body_class');  

从案例中,可以看到核心代码

  array_push()

如果看不懂,可以直接百度。