Удалить классы из body_class

Мне не нужен этот весь беспорядок таких классов …

<body class="page page-id-829 page-template page-template-page-template-portfolio-php portfolio">

Мне хотелось бы что-то вроде этого …

<body class="portfolio">

Есть ли фрагмент фильтра где-то, у которого есть список всех классов, и тогда я могу просто расколоть материал, который я не хочу видеть в классе тела.

Благодарю.

Solutions Collecting From Web of "Удалить классы из body_class"

Вы можете настроить $whitelist array в этой функции, чтобы отфильтровать все остальные нежелательные классы.

 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(); ?> <?php body_class(); ?> тег шаблона, если у вас нет необходимости в его выходе.

Просто примените class="portfolio" закодированный в <body> .

Просто поместите классы вашего css, которые вы хотите удалить в $ class_delete

 add_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 ); } не add_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 ); } 

Это даст каждой странице класс тела только «портфолио». Первый аргумент – это массив генерируемых классов тела, которые обычно появляются. Второй аргумент представляет собой массив классов, переданных в функцию класса body (например, body_class('portfolio'); и второй аргумент в этом array( 'portfolio' ) функций array( 'portfolio' ) ).

 function wpse15850_body_classes( $classes, $class ){ return array( 'portfolio' ); } add_filter( 'body_class', 'wpse15850_body_classes', 10, 2 ); 
 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().'"'; }