仕事上、WordPressをよく使うナカトミツヨシ(@meganetosake)です。get_template_part()
で変数を渡したい…!以前は正式な方法では渡せず、ちょっと特殊なやり方が必要だったのですが、WordPress5.5以上では正式に渡すことができるようになりました。今回はそちらの方法を解説いたします。下記のような以前の方法が使えなくなった方もこちらの方法を試してみてください!
get_template_part()
で変数を渡したいget_template_part()
にset_query()
を使って変数を渡していたが、変数が渡せなくなったinclude(locate_template())
を使って変数を渡していたが、渡せなくなった- Warning: Illegal string offset… というエラー文が出るようになった
CONTENTS
get_template_part()の仕様が変更された
get_template_part()
はWordPress5.5で仕様変更があり、第三引数に変数を書くことで、別のテンプレートに変数を渡すことができるようになりました。
Having the ability to pass a variable into get_template_part would be invaluable, it would really clean up the issues with using globals and to further cement it’s use rather than the alternative of a normal PHP include/require.
It would be the third variable passed into get_template_part, which I could pass it a string, array, object, or whatever I want really. Here’s an example of passing all the current scope’s variables:
get_template_part()
にて第三引数を設定すると、文字列、配列、オブジェクトなど、好きなものを渡すことができます。
使い方
基本の方はこちらです。公式の情報はこちら。
get_template_part( string $slug, string $name = null, array $args = array() )
実際の利用サンプル
<?php
get_template_part( 'templates/modules/slider.php', null, $args = array(
'class' => 'slider',
'options' => array(
'slider-title' => 'スライダー',
'is-active' => true,
))
);
?>
<?php
if ( $args['class'] ) {
echo $args['class'];
}
?>
配列の場合はこのように記述します。
<?php
if ( $args['options'] ) {
echo $args['options']['slider-title'];
}
?>
この方法で、get_template_part()
を使って変数を渡すことができます。便利になりましたね…