WordPressのget_template_part()に$argsで引数を渡す

WordPress 5.5.0から get_template_part()$args パラメーターが追加されています。

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

get_template_part() | Function | WordPress Developer Resources

例えば、こんなかんじで渡して、

get_template_part('product', null, array(
  'title' => 'Apple',
  'price' => 100,
));

こう使います。

<?php ['title' => $title, 'price' => $price] = $args; ?>
<h1><?= $title ?></h1>
<p><?= $price ?></p>

毎回 $args['title'] みたいに書いても良いのですが、上記のようにいちど変数に格納しても大丈夫です。

分割代入はPHP7.1以降で、キーの指定と、list() だけでなく [] の書き方ができるようになっています。

PHP: list - Manual

ちなみに、これまでは…

関数リファレンス/get template part - WordPress Codex 日本語版 に記載があるように、 set_query_var() を利用したこんな関数を用意していました。

function get_template_part_with_var($template_name, $var_array = null){
  if (isset($var_array)) {
    while (list($key, $val) = each($var_array)) {
      set_query_var($key, $val);
    }
  }
  get_template_part($template_name);
}

WordPress 5.5.0からこのような処理が不要になります。ひと手間減って便利ですね。

ちなみにここで使っている each は、PHP 7.2.0で非推奨になり、PHP 8.0.0で削除されました。

PHP: each - Manual

今後は get_template_part() をそのまま使っていきましょう。

ちなみに、同じくWordPress 5.5.0から、get_header()get_footer() にも $args が追加されています。