こんにちは、阿久梨絵です!
WordPress のテーマには header.php や footer.php は存在するのに、なぜ body.php がないのか?
初心者の方が疑問に思うポイントですが、これは WordPressのテンプレート構造の設計によるもの です。
本記事では、「body.phpがない理由」 と、WordPressがページの本文部分をどのように処理しているのか詳しく解説します。
1. WordPressのページ構成
WordPressのテーマは、以下のようなファイル構成になっています。
・header.php → ページの上部(ヘッダー)を担当
・footer.php → ページの下部(フッター)を担当
・本文部分(<body> の中)は page.php や single.php などが担当
つまり、本文の構造は「ページタイプごとのテンプレート」に分担されている ため、
body.php という単独ファイルは不要なのです。
2. body.php の代わりに使われるテンプレート
WordPressのテンプレート階層では、ページの種類ごとに以下のテンプレートが使われます。
・page.php → 固定ページの本文を表示
・single.php → 投稿ページの本文を表示
・index.php → その他のページの本文を処理(汎用テンプレート)
・archive.php → カテゴリ・タグ・投稿一覧の本文を処理
例えば、記事の詳細ページ(投稿ページ)の場合、以下のような構成になります。
<?php get_header(); ?>
<div class=”content”>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<div><?php the_content(); ?></div>
<?php endwhile; endif; ?>
</div>
<?php get_footer(); ?>
・get_header() で header.php を読み込み
・本文部分(<body> 内)は single.php が担当
・get_footer() で footer.php を読み込み
この構成により、WordPressでは body.php を使わずにページを管理しています。
3. なぜ header.php や footer.php は共通なのに、body.php はないのか?
ページの種類ごとに本文のレイアウトが異なるため
→ 投稿ページ (single.php) と固定ページ (page.php) では表示が違う
動的なコンテンツを表示するため
→ get_header() や get_footer() を使い、共通部分を適用
WordPressのテンプレート階層で管理できるため
→ index.php や archive.php などが body の役割を担う
つまり、WordPressでは 「ページの種類ごとに本文を表示する設計」 になっているため、
body.php を用意せずに、他のテンプレートで構成されているんですね!
4. body.php のような統一的な構成を作りたい場合
「各ページで統一的なレイアウトを維持したい」という場合は、カスタムテンプレート を作る方法があります。
例えば、共通の本文構造を content.php にまとめる
<div class=”common-body”>
<h1><?php the_title(); ?></h1>
<div><?php the_content(); ?></div>
</div>
各ページで get_template_part() を使って読み込む
<?php get_template_part( ‘content’ ); ?>
single.php や page.php で content.php を使えば、body.php に近い構成を作れる
まとめ
・WordPressには body.php がなく、本文部分は single.php や page.php などのテンプレートが担当
・動的なページ構成を可能にするため、ページ種類ごとのテンプレートが設計されている
・統一的な本文構造を作る場合は content.php などを活用すると便利
WordPress の構造を理解すると、カスタマイズの幅が広がります!
阿久梨絵でした!