如何在Wordpress中从body元素中删除类?
默认: body class =“page page-id-7 page-template-default logged-in”
我正在寻找的东西: body class =“page-id-7”
On Post's: body class =“postid-40”
答案 0 :(得分:9)
这就是你如何找到这样的东西:
通过查看主题文件找到相关功能,在本例中为header.php
在Wordpress Codex中查看此功能(http://codex.wordpress.org/Function_Reference/body_class)
是否有任何与我想要的相似的例子?是:
//按过滤器添加特定的CSS类 的add_filter( 'body_class', 'my_class_names'); function my_class_names($ classes){ //将'class-name'添加到$ classes数组中 $ classes [] ='class-name'; //返回$ classes数组 返回$ classes; }
基本上,要删除所有类,只需将其添加到functions.php:
add_filter('body_class','my_class_names');
function my_class_names($classes) {
return array();
}
吨 但我想保留页面ID和帖子ID - 我该怎么做?因为您不知道数组中哪些索引可以找到此信息,并且通过数组搜索是蹩脚的,所以您需要先像上面那样清空数组,然后添加您真正想要的内容。您如何获得正确的信息,即页面ID和帖子ID?这是第五步。
(5)在codex页面的底部,您将找到源代码的链接。这是您可以找到的链接:http://core.trac.wordpress.org/browser/tags/3.2.1/wp-includes/post-template.php如果您查看该函数,您将看到它使用的函数只是填充我们可以使用上述过滤器操作的相同数组。通过查看他们是如何做到的,你也可以做到。
add_filter('body_class','my_class_names');
function my_class_names($classes) {
global $wp_query;
$arr = array();
if(is_page()) {
$page_id = $wp_query->get_queried_object_id();
$arr[] = 'page-id-' . $page_id;
}
if(is_single()) {
$post_id = $wp_query->get_queried_object_id();
$arr[] = 'postid-' . $post_id;
}
return $arr;
}
希望这段代码有效。如果没有,请按照上述步骤尝试找出问题所在。我希望我至少帮助过一段时间:)
答案 1 :(得分:0)
当前有效的代码,用于删除和添加类
//remove body class
add_filter('body_class', function (array $classes) {
if (in_array('class_name', $classes)) {
unset( $classes[array_search('class_name', $classes)] );
}
return $classes;
});
// Add specific CSS class by body.
add_filter( 'body_class', function( $classes ) {
return array_merge( $classes, array( 'class-name' ) );
} );