WordPressのテンプレートタグである、body_class(); を使用するとbody要素に様々なクラスを追加することができます。
body_class(); の使い方
body_class(); の基本的な使い方は下記のように記述します。
<body <?php body_class(); ?>>
header.php
内のbody要素を上記の様に変更して、各ページのソースを見てみると、トップページには「home」、アーカイブページには「archive」というように、様々なクラスが追加されているのが確認できます。
独自のクラスを追加する
「home」や「archive」のように自動で出力されるクラスとは別に、独自のクラスを追加したい場合、下記のようにすれば任意のクラスを追加することが可能です。
<body <?php body_class('class-name'); ?>
トップページを見てみると「home」とは別に「class-name」が追加されていると思います。
また、複数のクラス名を追加したい場合は、半角スペースで区切ってあげれば何個でも追加することができます。
<body <?php body_class('class-a class-b class-c'); ?>
function.phpを使って追加
function.phpを使用してクラスを追加する場合は、function.php
に下記のように記述します。
add_filter( 'body_class', 'my_class_names' );
function my_class_names( $classes ) {
$classes[] = 'class-name';
return $classes;
}
独自のclassやidを指定する方法
body_class(); を使用すれば、簡単にクラスを追加することが可能です。ただ、元となるHTMLに独自のclassやidが使われている場合などは、条件分岐を使って独自のclassやidを指定する方法もあります。
idを指定する
<?php
$body_id ="";
if ( is_single() || is_page() ) {
$body_id = ' id="'.$post->post_name.'" ';
} else if ( is_category() ) {
$category = get_the_category();
$body_id = ' id="category_'.$category[0]->category_nicename.'" ';
}
?>
<body <?php echo $body_id; ?>>
classを指定する
<?php if( is_front_page() ) {
$original_body_class = 'top-page'; // front-pageに指定するクラス
} else if( is_single() ){
$original_body_class = 'single-page'; // singleページに指定するクラス
}
?>
<body class="<?php echo $original_body_class; ?>">