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