WordPressで特定のテンプレートファイルを必要な場所で読み込む方法

どうも、ホワイトです。

WordPressのファイル構成でヘッダー、サイドバー、フッターは共通のテンプレートファイルとして読み込むことはWordPressを使い始めればすぐに覚えることになりますが、それ以外のテンプレートファイルでも同じような内容がいくつものページに表示される場合にはテンプレートをパーツ化して読み込んじゃいたいなぁって思うことも当然出てきます。

そんなときに使い回したいテンプレートファイルを必要な場所で読み込んじゃおうっていう方法です。

まずはレギュラーの読み込みファイルのおさらい

前述したとおり、ヘッダー、サイドバー、フッターは

//ヘッダー
<?php get_header(); ?>
//サイドバー
<?php get_sidebar(); ?>
//フッター
<?php get_footer(); ?>

もうホントこれは当たり前かもしれないけど、必ず使うから何も見ないで書けます。

というか書けない人もすぐに書けるように覚えちゃいますね。

念のため、一番目がヘッダーの読み込み、次がサイドバーの読み込み、そして最後がフッターの読み込みになります。

get_template_partでテンプレートファイルを読み込む

続いて本題。

ヘッダー、サイドバー、フッター以外のテンプレートファイルを任意の場所に読み込むための方法です。

ファイルの読み込みにはget_template_part関数を使用します。

例えば「sample.php」というファイルを読み込む場合は次のように記述します。

<?php get_template_part('sample'); ?>

「sample.php」というファイルを各所で使い回したい場合は、このような書き方で「sample.php」の内容を任意の場所へ表示することができます。

ここでテンプレート関数についての仕様を改めて見てみると、以下の通りとなっています。

<?php get_template_part( $slug, $name ); ?>

$slubは必須で、$nameは$slugに対して$nameが存在するときのみ記述します。

という説明では自分もよくわからなかったので、実際の例を挙げるとこうなります。

よくある例として
「content.php」と「content-text.php」を読み込む例で説明します。

//content.php
<?php get_template_part('content'); ?>

先ほどの「sample.php」を読み込むときと同じですね。

この場合は$slugが「content」になるので、そのまま「content」のみ記述すればOKですね。

続いて「content-text.php」を読み込むときはこうなります。

//content-text.php
<?php get_template_part('content', 'text'); ?>

「content」という$slugに対して、「text」という$nameがあるため、このような記述となります。

テーマのディレクトリに別ディレクトリを作っている場合

テーマファイルが入っているディレクトリに「inc」「parts」などというディレクトリを更に作っているケースはよくある話です。

そういった場合のファイル指定は次のように行います。

//incディレクトリ内のcontent.phpを指定する場合
<?php get_template_part('inc/content'); ?>

cssを指定するときなんかと一緒ですね。

同じ内容をサイト内のあちこちで使い回さなくてはいけない場合は、非常に助かるので、必ず覚えておきたい関数です。