テーマのデフォルトのボディクラスを削除して新しいクラスを追加したいです。
私はこれを行うためにこのコードを使用します。
//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;
}
このコードは、2つのデフォルトクラスが消えて新しいクラスが表示されるため機能しますが、style.css
に "my_custom_class"を作成するとCSSは機能しません。
私は例えばマージンを修正しようとしました、私はこのコードを使います:
.my_custom_class {
margin-top: 350px !important;
}
しかし現場では変更はありません。
my_custom_class()
関数はクラス名my-custom-class
を使用していますが、CSSはクラスmy_custom_class
をターゲットにしています。これら2つの文字列はまったく同じでなければなりません。
.my-custom-class {
margin-top: 350px !important;
}
また、すべてのbody_class
のものを単一のコールバック関数で処理する方が少しきれいです。
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;
}