<body class="page page-id-829 page-template page-template-page-template-portfolio-php portfolio">
我想要这样的东西...
<body class="portfolio">
某处是否有一个包含所有类列表的过滤器片段,然后我可以取消注释我不想在body类中看到的内容。 >谢谢。
#1 楼
您可以在此函数中配置$whitelist
数组,以过滤掉所有其他不需要的类。add_filter( 'body_class', 'wpse15850_body_class', 10, 2 );
function wpse15850_body_class( $wp_classes, $extra_classes ) {
// List of the only WP generated classes allowed
$whitelist = array( 'portfolio', 'home', 'error404' );
// Filter the body classes
$wp_classes = array_intersect( $wp_classes, $whitelist );
// Add the extra classes back untouched
return array_merge( $wp_classes, (array) $extra_classes );
}
#2 楼
@Geert答案的一个补充(也添加了一个黑名单):)评论
尽管这是一个很好的解决方案,但我仍然发现将“ no-js”添加为类
– henrywright
2014年1月27日12:07
关于no-js类-我认为这可能是BuddyPress的事情。我会调查的!
– henrywright
2014年1月27日12:36
通常使用javascript / jquery处理no-js或类似的js,所以我猜测这是您需要出队的脚本
–布莱恩·威利斯(Bryan Willis)
2015年12月19日,下午3:35
服务器将添加no-js,但如果允许在浏览器上运行javascript,则会使用脚本将其删除。
–戴维
19年4月30日在8:10
#3 楼
如果您不需要<?php body_class(); ?>
模板的输出,我建议只省略它。只需将硬编码的
class="portfolio"
应用于<body>
标记即可。评论
如果您想在wp.org存储库中托管主题,则无需选择(仅作旁注)。
– kaiser
11年4月28日在23:46
大声笑,我知道...我已经审查了WPORG存储库的一个或两个主题。 :)尽管如此,我还是以为这个主题是供个人使用,而不是一般的公共发行。
–芯片Bennett
11年4月29日在0:51
#4 楼
只需将要删除的CSS的类放在$ class_deleteadd_filter( 'body_class', 'wpse15850_body_class', 10, 2 );
function wpse15850_body_class( $wp_classes, $extra_classes ) {
# List tag to delete
$class_delete = array('tag');
# Verify if exist the class of WP in $class_delete
foreach ($wp_classes as $class_css_key => $class_css) {
if (in_array($class_css, $class_delete)) {
unset($wp_classes[$class_css_key]);
}
}
// Add the extra classes back untouched
return array_merge( $wp_classes, (array) $extra_classes );
}
#5 楼
这将为每个页面提供仅“投资组合”的正文类。第一个参数是通常会出现的所生成主体类的数组。第二个参数是传递给body类函数的类的数组(例如,body_class('portfolio');
将使该函数中的第二个参数array( 'portfolio' )
)。#6 楼
Try the following...
function var_template_include( $t ){
$basename = basename($t);
$templatename = substr($basename, 0,strrpos($basename,'.'));
$GLOBALS['current_theme_template'] = $templatename;
return $t;
}
add_filter( 'template_include', 'var_template_include', 1000 );
function current_template( $echo = false ) {
if( !isset( $GLOBALS['current_theme_template'] ) ) {
return false;
} if( $echo ) {
echo $GLOBALS['current_theme_template'];
} else {
return $GLOBALS['current_theme_template'];
}
}
function body_template_as_class() {
echo 'class="'.current_template().'"';
}
#7 楼
function alpha_remove_class($wp_classes){
unset( $wp_classes[ array_search( "first_class", $wp_classes ) ] );
return $wp_classes;
}
add_filter( 'body_class', 'alpha_remove_class' );
评论
欢迎使用WordPress Stack Exchange!您能否使用上面的编辑链接来编辑您的答案,并解释该代码的功能,将代码放置在何处以及与以前发布的答案有何不同或更好?通常不建议使用仅代码的答案,而无需任何解释。
– Howdy_McGee♦
18/09/5在21:34
#8 楼
如果您只想从body标记中删除特定的类,则应执行以下操作:add_filter('body_class', 'remove_body_class', 20, 2); function remove_body_class($wp_classes) { foreach($wp_classes as $key => $value) { if ($value == 'portfolio') unset($wp_classes[$key]); // Replaces "portfolio" and removes it } return $wp_classes; }
评论
真正的问题是您为什么要这样做?拥有这些额外的类对事物的宏大计划无关紧要,并且如果以后要引用它们,则最好将它们用于样式。@Otto-我可以完全理解她/他。如果您要尝试在例如中添加类。萤火虫,那真的很难解决。 FF通常是错误的,并且是您在视口之外编写的类名。在开发人员自己期间,我关闭了大量的上课和下课课程-这使生活变得更轻松。
嗯,是的,我不使用Firebug。它的界面很糟糕。