body のクラスに投稿の種類などを指定

WordPress で body のクラスに category-hoge とか、single とか paged とかつける方法。
もっと単純なやつを自作して使っていたけど、2.8以降はテンプレートタグで。

テンプレート内で、body の部分を

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

に置き換えれば、適宜クラス名をつけてくれる。

サイトの構成によって違うだろうけど、ホームだと、

class="home blog"

親があり子があるページだと、

class="page page-id-35 page-child parent-pageid-33"

というような感じで出てくる。

書き出されるクラスは多いので一覧はCodexを参照。

自分でクラス名を追加したいときは引数に指定するか、フィルターで。

直接指定

<?php body_class('class-name'); ?>

配列で指定

<?php $classes = array('hoge', 'fuga'); ?>
<body <?php body_class($classes); ?>>

フィルターも用意されている。

add_filter('body_class','my_class_names');
function my_class_names($classes, $class) {
  //略
}