WordPressのページテンプレートをパーツ化

WordPressのオリジナルテーマを作成において、ページテンプレートの一部をパーツ化することで複数のページテンプレートで使いまわし、管理工数の削減や変更箇所の見つけやすさの向上が期待できます。

WordPressでは、「header.php」、「footer.php」などがデフォルトでテンプレートパーツとして用意されています。
これらは <?php get_header(); ?><?php get_footer(); ?> でインクルードすることが可能です。

任意に作成したテンプレートパーツをインクルードする場合に使用するのが get_template_part(); 関数です。

目次

get_template_part(); 関数

関数リファレンス/get template part

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_template_part

使い方

<?php get_template_part( $slug ); ?>

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

パラメータ

$slug(文字列)(必須)
一般テンプレートのスラッグ名
初期値: なし

$name(文字列)(オプション)
特定テンプレートの名前
初期値: なし

使用例

各パラメータに{$slug}.php {$slug}-{$name}.php という形で値を指定します。
hoge.phpをインクルードする場合は

<?php get_template_part( ‘hoge’ ); ?>

hoge-content.phpをインクルードする場合は

<?php get_template_part( ‘hoge’, ‘content’ ); ?>

テーマディレクトリ内のパスを指定することも可能です。
parts/hoge-content.phpをインクルードする場合は

<?php get_template_part( ‘parts/’hoge’, ‘content’ ); ?>

以上のように使用します。

get_template_part()でインクルードしたテンプレートパーツに変数を渡す

呼び出し側のページテンプレートで定義した変数をテンプレートパーツで参照するために変数を渡す方法です。

WordPress 5.5 以上から get_template_part() に第三引数として変数を渡すことができるようになりました。

WordPress 5.5 以上での get_template_part() の第三引数

WordPress 5.5 以上から get_template_part() に第三引数 $args を渡すことが可能となりました。

get_template_part( string $slug, string $name = null, array $args = array() )

https://developer.wordpress.org/reference/functions/get_template_part/

第三引数 $args は配列となっているのでキーと値を入れてやることでテンプレートパーツで変数を取り出すことが出来ます。

使い方

ページテンプレート側

$example = [
  'value' => $value,
  'array' => $array,
];
get_template_part( 'parts/'hoge', 'content', $example);

1-4行目 第三引数 $args は配列に配列を格納
5行目  <?php get_template_part( ‘parts/’hoge’, ‘content’ ); ?>に第三引数を追加

テンプレートパーツ側

$re_value = $args['value'];
$re_array = $args['array'];

テンプレートパーツ側で値を取り出すときの変数$args[”] は渡す側の変数名に関係なく$args を使用します。

この記事を書いた人

目次
閉じる