WordPressテーマのテンプレートファイルで別のテンプレートファイルを読み込む方法

2016.06.23 WordPress
WordPressテーマのテンプレートファイルで別のテンプレートファイルを読み込む方法

一般的なWordPressテーマでは、「header.php」「footer.php」「sidebar.php」などのように、ウェブサイト上の各パーツを別々に作成しておいて、「index.php」「page.php」「single.php」などのテンプレートファイルから各パーツを読み込むことでページを生成します。

少し複雑な構成のウェブサイトになってくると、ヘッダーやサイドバー以外にも別パーツ化しておいた方が便利なときもあります。

たとえば投稿とカスタム投稿でページのレイアウトを部分的に変えたい場合、その変更する部分以外の箇所は同じ記述になるわけです。その共通部分を別のテンプレートとして作成しておいて「single.php」「single-○○.php(カスタム投稿用のテンプレートファイル)」から読み込むようにしておいた方がメンテナンス性が向上します。

いろいろなWordPressテーマを見てみると、ループ部分を別パーツ化しておいて「index.php」や「single.php」などから読み込む構造になっているものがよく見られます。

今回は「single.php」からループの部分だけ別のテンプレートファイルを読み込む方法を例としてご紹介していきます。

投稿用テンプレートファイル「single.php」を作成する

<?php get_header(); ?>
<!-- ループここから -->
<div class="post">
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<div>
<?php echo get_the_date('Y.m.d'); ?>
<?php the_category(' '); ?>
</div>
<?php the_content(); ?>
<?php endwhile; else : ?>
<p>記事が見つかりません。</p>
<?php endif; ?>
</div>
<!-- ループここまで -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

まずは通常通りsingle.phpを作成します。はじめから読み込み元ファイルと読込先ファイルを分けて作ろうとするよりも、最初に別パーツ化する予定の部分も込みで一つのテンプレートファイルを作った上で分けた方が混乱せずに制作できるかと思います。

別パーツとなるテンプレートファイルと作成する

作成したsingle.phpから、別パーツ化する部分(今回の例ではループの部分)のみをコピーして、新規のテンプレートファイルを作成します。この新規テンプレートファイル名を、ここでは「loop-single.php」としておきます。

	<div class="post">
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<div>
<?php echo get_the_date('Y.m.d'); ?>
<?php the_category(' '); ?>
</div>
<?php the_content(); ?>
<?php endwhile; else : ?>
<p>記事が見つかりません。</p>
<?php endif; ?>
</div>

single.phpからは別パーツ化する部分を削除して以下のような状態にしておきます。

<?php get_header(); ?>
<!-- ループここから -->
<!-- ループここまで -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

single.phpから別パーツ化したループ部分を読み込む

最後に、single.phpからループ部分のテンプレートファイル「loop-single.php」を読み込みます。

<?php get_header(); ?>
<!-- ループここから -->
<?php get_template_part( 'loop-single' ); ?>
<!-- ループここまで -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

以上が、WordPressのテンプレートファイルから別のテンプレートファイルを読み込む方法です。テンプレートファイルを分割しておくと、後々のメンテナンス性が大幅に上がります。WordPressテーマ内で重複する部分はできるだけパーツ化しておくと、その部分の修正が必要になったときに修正するファイルが一つで済みます。

なお、こういったテンプレートファイルの構成は制作前にできるだけ練っておくとあとの工程がスムーズに進みます。紙に書いたりエクセルでマップを作ったりして効率的な構成を考えてみてくださいね。

photo credit: Waiting For The Familiar Music Of Your Machines via photopin (license)

WordPressテーマ『HIGHLAND』公開しました

WordPressテーマ『HIGHLAND』を公開しました

このブログで紹介しているカスタマイズを、これでもかと盛り込んだ高性能なテーマになっております。商用・非商用問わず無料、是非ご利用ください。

ブログ集客メール講座登録フォーム

「売上が不安定で、月末になるといつも不安……」
「営業が苦手で新規開拓がうまくいかない……」
「Webが苦手でブログをうまく活用できない……」

個人起業家・フリーランスのあなた、こんなお悩みはありませんか?

実は僕も、独立して最初に直面したのが「集客」の壁でした。

しかし今は、1年の大半をベトナムで過ごしながら、フリーランスのWebディベロッパーとして生計を立てています。

僕がなぜ、時間・場所・人間関係に縛られずに暮らせるようになったのか?

その答えは「ブログ」にあります。

今なら、「初心者の人が成果を上げるため」のブログ集客ノウハウを、メール講座限定でお伝えします。

興味のある人は、今すぐ以下から登録【無料】を!

ブログ初心者が生き残るためのブログ集客メール講座

柴田竹思

柴田竹思

日本&ベトナム二拠点生活中のWeb系フリーランス。最近は育児6:仕事4のバランスで生活してます。これでもかってくらい奥さんの尻に敷かれてる座布団系男子です。

プロフィールはこちら