WordPress のget_template_part()
は、PHP の include などと違って呼び出し側で定義した変数を参照することができません。そのため、グローバル変数である$wp_query
に値を渡してそこから参照できるようにします。
(2021/2)WordPress 5.5 以上から、get_template_part() の引数で変数を渡すことができるようになりました。その方法も解説します。
今回は例として、example.php
というテンプレートを呼び出し、その中から呼び出し側にある変数を参照できるようにします。
WordPress バージョン 5.5 以上:get_template_part() の引数を使う
5.5 以上であれば、get_template_part()
の第三引数 $args を渡すことができます。
get_template_part() | Function | WordPress Developer Resources
呼び出し側
get_template_part()
の第三引数に配列を渡します。
// テンプレート読み込み
$args = [
'example_string' => 'てきとうな文字',
'example_array' => [1, 2, 3],
];
get_template_part('example', null, $args);
今回は呼び出しファイル名が example.php という名前のため第二引数は null としていますが、example-hoge.php などであれば、
get_template_part('example', 'hoge', $args);
になります。
テンプレート側
変数 $args を読み込み、値を取り出すだけです。
<?php
echo $args['example_string']; // てきとうな文字
echo implode(',', $args['example_array']); // 1,2,3
変数名は get_template_part()
側で $args という名前で定義したからではなく、どう渡してもこちら側は $args という変数名で受け取ります。
WordPress バージョン 5.5 未満:set_query_var() を使う
呼び出し側
// 変数をセットする
set_query_var('example_variable', 'てきとうな文字');
// テンプレート読み込み
get_template_part('example');
set_query_var()
set_query_var()
で、グローバル変数$wp_query->query_vars
の配列に値を追加することができます。ここでは'