Je n'ai pas besoin de tout ce bazar de cours comme ça ...
<body class="page page-id-829 page-template page-template-page-template-portfolio-php portfolio">
Je voudrais quelque chose comme ça ...
<body class="portfolio">
Existe-t-il quelque part un extrait de filtre contenant une liste de toutes les classes et je peux alors simplement commenter les éléments que je ne souhaite pas voir dans la classe body?.
Merci.
Vous pouvez configurer le tableau $whitelist
dans cette fonction pour filtrer toutes les autres classes indésirables.
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 );
}
Juste un ajout à la réponse de @Geert (ajouté une liste noire aussi) :)
Merci de bien vouloir marquer la réponse de @Geert comme solution (pas celle-ci).
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 );
Je recommanderais simplement d'omettre la balise de modèle <?php body_class(); ?>
, si vous n'en avez pas besoin.
Il suffit d'appliquer class="portfolio"
codé en dur dans la balise <body>
.
Il suffit de placer les classes de votre css que vous souhaitez supprimer dans $ 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 );
}
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().'"';
}
Cela donnera à chaque page une classe de corps composée uniquement de "portefeuille". Le premier argument est le tableau des classes de corps générées qui devraient normalement apparaître. Le deuxième argument est un tableau de classes passé à la fonction de classe body (par exemple, body_class('portfolio');
créerait le deuxième argument dans cette fonction array( 'portfolio' )
).
function wpse15850_body_classes( $classes, $class ){
return array( 'portfolio' );
}
add_filter( 'body_class', 'wpse15850_body_classes', 10, 2 );
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' );
Si vous souhaitez uniquement supprimer une classe spécifique de body Tag, vous devriez procéder comme suit:
add_filter ('body_class', 'remove_body_class', 20, 2); function remove_body_class ($ wp_classes) { poureach ($ wp_classes en tant que $ key = > $ valeur) { if ($ valeur == 'portefeuille') non défini ($ wp_classes [$ key]); // remplace "portfolio" et le supprime } Return $ wp_classes; }