【WordPress】bodyに固有のクラス名を付けることができるタグbody_class

今更なのですが初めて知ったのでメモ…

bodyタグに入れるだけ↓

<body <?php body_class(); ?>>

HTMLを見るとそのページのidが含まれたクラス名が自動的に付く
ほかログイン中のページかどうか、固定ページか投稿ページか、カテゴリなどのクラスも付くみたい

任意のクラス名を付けることも可能↓

functions.php

add_filter( 'body_class', 'add_custom_body_class' );
function add_custom_body_class( $classes ) {
    // スラッグが "contact" のページの場合クラス名"toiawase"を付ける
    if ( is_page( 'contact' ) ) {
        $classes[] = 'toiawase';
    }
    return $classes;
}

今回は、WP-Membersプラグインを使って作成した「制限あり(ログインしたユーザーしか見られない)」ページのみに特定のクラスをつけたかったのでこのように記述↓

add_filter( 'body_class', 'my_wpmembers_body_class' );
function my_wpmembers_body_class( $classes ) {
    if ( is_page() ) {
        global $post;
        if ( get_post_meta( $post->ID, '_wpmem_block', true ) == '1' ) {
            $classes[] = 'm-page';
        }
    }
    return $classes;
}

コメント