どうも7noteです。Wordpress5.5からget_template_part()の第三引数に変数を持たせることができるようになったらしい!
ちょっと出遅れたのですが、get_template_part()を使って第三引数に変数を持たせて、呼び出し元で設定した変数をもとにインクルードさせて実行できるようになったようです!
つまり、
「自作コンポーネントを作って呼び出すときに追加オプションが設定できるようなもの」
(いろんなページで使うから、1つのファイルとして管理したいけど、TOPページと下層ページでは1か所だけ違うんだけどどうしよう・・・)なんてことがあっても大丈夫!
呼び出すときに呼び出し元によって異なる箇所だけ変数として設定しておくことで1ファイルで管理でき、コンポーネントとして使えるのです。こうしてパーツ化させておけば管理や修正がとても楽になります。
どう変わったのか?
【過去】Wordpress5.4以前
例)「あいうえおかきくけこ」
例)「あいうえおかきくけコ」
(↑ 内容がほぼ一緒なのに1部だけ違うから別ファイルにしないといけなかった ↑)
<?php
get_template_part(hogehoge,a);
?>
<?php
get_template_part(hogehoge,b);
?>
【現在】Wordpress5.5以降
<?php $text = $args; ?>
「あいうえおかきくけ<?php echo $text; ?>」
$args
に値が格納されているので、引っ張り出す。
<?php
$text = "こ";
get_template_part('hogehoge',null,$text);
?>
<?php
$text = "コ";
get_template_part('hogehoge',null,$text);
?>
結果
〇TOPページ
→「あいうえおかきくけこ」
〇記事(single)ページ
→「あいうえおかきくけコ」
解説
パット見ではそこまで差がないように思えるが、テンプレートファイルの差異のパターンが3つ4つ5つ・・・と増えていく可能性を考えたり、共通の修正が1ファイルの修正で済む事を考えれば圧倒的にget_template_part()を使う方法の方がメンテナンス性が高いです。
おまけ
~他にも第三引数に変数を入れて渡すことができるようになった関数たち~
- get_header()
- get_footer()
- get_sidebar()
- get_template_part()
- locate_template()
- load_template()
まとめ
wordpress5.4以前でも変数を渡す方法があったのでご紹介。
<?php
$text = get_query_var('text');
?>
「あいうえおかきくけ<?php echo $text; ?>」
<?php
set_query_var('text', 'ko');
get_template_part('hogehoge');
?>
結果
〇トップページ
→「あいうえおかきくけko」
おそまつ!
~ Qiitaで毎日投稿中!! ~
【初心者向け】WEB制作のちょいテク詰め合わせ