問題描述
我不需要像這樣的整個班級
<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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。