问题描述
我不需要像这样的整个班级
<body class="page page-id-829 page-template page-template-page-template-portfolio-php portfolio">
我想要这样的东西
<body class="portfolio">
有没有一个过滤器片段有一个列表的所有类,然后我可以只是取消注释我不想看到在 body 类中的东西。
谢谢。
最佳解决方案
您可以在此功能中配置 $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 );
}
次佳解决方案
只是加上 @Geert 的答案 (也添加了一个黑名单):)
请高兴地将 @Geert 的答案标记为解决方案 (不是这个) 。
function wpse15850_body_class( $wp_classes, $extra_classes )
{
// List of the only WP generated classes allowed
$whitelist = array( 'home', 'blog', 'archive', 'single', 'category', 'tag', 'error404', 'logged-in', 'admin-bar' );
// List of the only WP generated classes that are not allowed
$blacklist = array( 'home', 'blog', 'archive', 'single', 'category', 'tag', 'error404', 'logged-in', 'admin-bar' );
// Filter the body classes
// Whitelist result: (comment if you want to blacklist classes)
$wp_classes = array_intersect( $wp_classes, $whitelist );
// Blacklist result: (uncomment if you want to blacklist classes)
# $wp_classes = array_diff( $wp_classes, $blacklist );
// Add the extra classes back untouched
return array_merge( $wp_classes, (array) $extra_classes );
}
add_filter( 'body_class', 'wpse15850_body_class', 10, 2 );
第三种解决方案
如果您不需要输出,我建议只省略<?php body_class(); ?>
模板标签。
只需将 class="portfolio"
hard-coded 应用于<body>
标签。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。