【WordPress】get_template_partの使い方。変数を渡す方法も解説

今回は、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というテンプレートに変数を渡したいとします。

header.php
<?php
$args = array(
	'key' => 'テキスト',
);

get_template_part( 'parts', null, $args );

$args変数に配列を入れて、以下のようにテンプレート側で取得できます。

parts.php
<?php

$text = $args['key'];

echo $text; // テキスト

ただし、このまま書くと変数が存在しない場合や、キーが存在しない場合エラーになるので、存在チェックをしてください。

parts.php
<?php

$text = '';

if ( isset( $args ) && isset( $args['key'] ) ) {
	$text = $args['key'];
}

echo $text; // テキスト

一行で以下のように書くことも可能です。

parts.php
$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で読み込むようにするとコードがスッキリします。

便利な関数なので積極的に活用していきましょう。


その他の記事