DAINASHI YESTERDAY

2016.06.23

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

26938883383_eed8ea36bb_b

一般的な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)

投稿者: