WordPress に「body.php」がない理由とは?ページ構成の仕組みを徹底解説!

こんにちは、阿久梨絵です!
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 の構造を理解すると、カスタマイズの幅が広がります!
阿久梨絵でした!

上部へスクロール
Verified by MonsterInsights