web-dev-qa-db-fra.com

Supprimer les classes de body_class

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.

13
agileapricot

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 );
}
27
Geert

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 );
13
kaiser

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>.

4
Chip Bennett

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 );
}
2
Bryan Contreras
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().'"';
}
1
Wok

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 );
1
John P Bloch
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' );
0
saifulislam

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; 
} 
0
Nices Wölkchen