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 を使用します。