WordPressでテーマを作るとき、ほぼ必ずと言っていいほど出てくるのがこの記述です。
<body <?php body_class(); ?>>
見た目はシンプルですが、ここにはテーマ開発において重要な役割があります。
これは何をしているのか
body_class() は、現在のページの状態に応じて自動的にclassを付与する関数です。
つまりこの1行で、WordPressが状況を判断して、<body>タグにクラスを追加してくれます。
例えば、出力されるHTMLはこんな感じになります。
<body class="home blog logged-in admin-bar">
このクラスは自分で書いているわけではなく、WordPressが自動で生成しています。
どんなクラスが付くのか
ページの種類や状況によって変わります。
代表的なものは以下です。
home:トップページ
single:投稿ページ
page:固定ページ
archive:一覧ページ
category-〇〇:特定のカテゴリ
logged-in:ログイン状態
admin-bar:管理バー表示中
つまり、「今どのページなのか」という情報がそのままクラスとして入ります。
なぜ必要なのか
結論から言うと、ページごとにCSSを出し分けるためです。
例えばこんなことができます。
.home .hero {
background: red;
}
.single .hero {
background: blue;
}
同じ .hero というクラスでも、ページによって見た目を変えることができます。
これを使わないとどうなるか
これを使わない場合、以下のような問題が出ます。
ページごとのデザイン切り替えが面倒になる
不要なクラスを手動で書く必要がある
条件分岐(PHP)が増えてコードが汚くなる
つまり、設計が一気に崩れます。
よくある誤解
「bodyにクラスが増えるだけでしょ?」
その認識は浅いです。
これは単なるクラス追加ではなく、WordPressの状態管理をCSSに橋渡しする仕組みです。
ここを軽く見ると、後から確実に詰みます。
実務での使い方
実務ではかなり頻繁に使います。
例えば、
トップページだけヘッダーを透明にする
下層ページは余白を増やす
特定の投稿タイプだけレイアウトを変える
こういう制御は、ほぼすべて body_class() を前提に書きます。
結論
body_class() はただの便利関数ではありません。
ページ状態を自動でクラス化する
CSS設計をシンプルにする
条件分岐を減らす
つまり、WordPressテーマ設計の基盤です。
これを理解せずに進むと、後から無駄に複雑なコードを書くことになります。