web-dev-qa-db-fra.com

Supprimer et ajouter une classe avec la fonction body_class ()

Je veux supprimer la classe de corps par défaut sur le thème et ajouter une nouvelle classe.

J'utilise ce code pour faire ceci:

//REMOVE / ADD HOME CLASS FROM BODY

add_filter('body_class', function (array $classes) {
    if (in_array('home', $classes)) {
      unset( $classes[array_search('home', $classes)] );
    }
  return $classes;
});

add_filter('body_class', function (array $classes) {
    if (in_array('blog', $classes)) {
      unset( $classes[array_search('blog', $classes)] );
    }
  return $classes;
});



add_action( 'body_class', 'my_custom_class');
function my_custom_class( $classes ) {
  $classes[] = 'my-custom-class';
  return $classes;
}

Le code fonctionne parce que les deux classes par défaut disparaissent et que la nouvelle classe apparaît, mais lorsque je crée "my_custom_class" dans style.css, la CSS ne fonctionne pas.

J'ai essayé de modifier la marge par exemple, j'utilise ce code:

.my_custom_class {
    margin-top: 350px !important;
}

mais sur place il n'y a pas de changement.

3
Crashy

La fonction my_custom_class() utilise le nom de classe my-custom-class, mais le CSS cible la classe my_custom_class. Ces deux chaînes doivent être exactement les mêmes:

.my-custom-class {
    margin-top: 350px !important;
}

En outre, il serait un peu plus propre de gérer tous les éléments body_class dans une seule fonction de rappel:

add_action( 'body_class', 'my_custom_class');
function my_custom_class( $classes ) {
    // Remove 'blog' class
    if (in_array('blog', $classes)) {
        unset( $classes[array_search('blog', $classes)] );
    }

    // Remove 'home' class
    if (in_array('home', $classes)) {
        unset( $classes[array_search('home', $classes)] );
    }

    // Add custom class
    $classes[] = 'my-custom-class';

    return $classes;
}
1
Dave Romsey