web-dev-qa-db-fra.com

Supprimer la classe qui a été ajoutée par le thème parent

Mon thème parent génère la classe suivante dans body: style-cupcake. Je ne veux pas ça. Le meilleur moyen de s'en débarrasser consiste à ajouter mes propres fonctions dans un fichier functions.php dans mon thème enfant, n'est-ce pas?

J'ai essayé ceci (une solution que j'ai trouvée sur WPSE) mais cela ne semble pas fonctionner. "arrière-plan personnalisé" est supprimé, mais style-cupcake persiste.

<?php

function my_body_class( $wp_classes, $extra_classes )
{
    // List of the only WP generated classes that are not allowed
    $blacklist = array('custom-background', 'style-cupcake');
    // 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', 'my_body_class', 10, 2 );

?>

Une idée?

1
Bram Vanroy

Si vous souhaitez appliquer un filtre au même contenu filtré par une autre fonction, modifiez l'argument de priorité (qui aurait dû s'appeler _execution_order_) en un nombre plus élevé.

Alors …

add_filter( 'body_class', 'my_body_class', 11, 2 );

… S'assurera que my_body_class() sera appelé après le another_body_class() qui a été enregistré avec 10:

add_filter( 'body_class', 'another_body_class', 10, 2 );

Notez également que l'argument priorité sera utilisé comme clé de tableau. Il ne doit pas nécessairement s'agir d'un nombre, mais simplement d'une clé valide.

// this works!
add_filter( 'body_class', 'my_body_class', 'very late please', 2 );
add_filter( 'body_class', 'my_body_class', PHP_INT_MAX, 2 );
2
fuxia