今回は、WordPressでよく使用するget_template_part関数を紹介します。
使い方を覚えておくと便利な関数なので、必ず覚えておきましょう。
目次
get_template_part関数の仕様
get_template_part関数には3つの引数を渡すことができます。
get_template_part( $slug, $name, $args );
第一引数($slug)にはファイルまでのパスを、第二引数($name)にはテンプレートの名前(オプション)、第三引数にはテンプレートに渡す配列(オプション)が入ります。
詳しい使い方は以下をご覧ください。
get_template_part関数の基本的な使い方
第一引数には、テーマフォルダでのパスを指定します。第一引数だけ必須です。
例えば、parts.phpというファイルを読み込みたいときは、
get_template_part( 'parts' );
と記述します。
parts.phpファイルがincludesフォルダに入っている場合は、
get_template_part( 'includes/parts' );
このように記述します。
異なるパターンのテンプレートファイルを複数用意する場合
使用目的は同じだけど、異なるパターンのファイルを用意したい場合があります。
例えば、パンくずリストを投稿ページ用、固定ページ用、アーカイブページ用をそれぞれ別で用意したいとします。
その場合、
- breadcrumbs-post.php
- breadcrumbs-page.php
- breadcrumbs-archive.php
と名前をつけたテンプレートを作成します。
これらを以下のように第二引数を指定してテンプレートを読み込みます。
get_template_part( 'breadcrumbs', 'post' );
get_template_part( 'breadcrumbs', 'page' );
get_template_part( 'breadcrumbs', 'archive' );
$slug-$name.phpの形でテンプレートにファイル名をつけて、
get_template_part( $slug, $name );
このようにテンプレートを取得できます。
テンプレートに変数(配列)を渡す
get_template_partでは、テンプレートに配列の形で変数を渡すことも可能です。
例えば、header.phpでparts.phpというテンプレートに変数を渡したいとします。
<?php
$args = array(
'key' => 'テキスト',
);
get_template_part( 'parts', null, $args );
$args変数に配列を入れて、以下のようにテンプレート側で取得できます。
<?php
$text = $args['key'];
echo $text; // テキスト
ただし、このまま書くと変数が存在しない場合や、キーが存在しない場合エラーになるので、存在チェックをしてください。
<?php
$text = '';
if ( isset( $args ) && isset( $args['key'] ) ) {
$text = $args['key'];
}
echo $text; // テキスト
一行で以下のように書くことも可能です。
$text = isset( $args ) && isset( $args['key'] ) ? $args['key'] : '';
get_template_part関数は積極的に活用しよう
1つのファイルであれこれ処理やHTMLをたくさん書くより、パーツごとにファイルを分割するとコードが見やすくなります。
例えば、header.phpにhead要素とサイトタイトル、グローバルナビ、ハンバーガーメニューなど全て詰め込むとコードが長くなり見づらくなってしまうこともあるでしょう。
そのような場合は、
- meta.php
- site-title.php
- global-nav.php
- hamburger-menu.php
のように分割してそれをheader.phpで読み込むようにするとコードがスッキリします。
便利な関数なので積極的に活用していきましょう。
その他の記事
【WordPress】add_meta_boxで投稿画面にメタボックス(独自の…
今回は、投稿画面にメタボックス(独自のカスタムフィールド)を追加する方法を解説します。メタボックスを…
【WordPress】CSSとJavaScriptをfunctions.phpで読み込もう
今回はWordPressで自作テーマを作成する際のfinctions.phpでCSSをJavaScr…
【WordPress】タクソノミー、ターム、カテゴリー、タグの違い…
今回はWordPressでWeb制作をする際に出てくる「タクソノミー」「ターム」「カテゴリー」「タグ…