7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Wordpressで自作のコンポーネントを作って変数付きで呼び出す方法

Last updated at Posted at 2021-03-21

どうも7noteです。Wordpress5.5からget_template_part()の第三引数に変数を持たせることができるようになったらしい!

ちょっと出遅れたのですが、get_template_part()を使って第三引数に変数を持たせて、呼び出し元で設定した変数をもとにインクルードさせて実行できるようになったようです!

つまり、

「自作コンポーネントを作って呼び出すときに追加オプションが設定できるようなもの」

(いろんなページで使うから、1つのファイルとして管理したいけど、TOPページと下層ページでは1か所だけ違うんだけどどうしよう・・・)なんてことがあっても大丈夫!
呼び出すときに呼び出し元によって異なる箇所だけ変数として設定しておくことで1ファイルで管理でき、コンポーネントとして使えるのです。こうしてパーツ化させておけば管理や修正がとても楽になります。

どう変わったのか?

【過去】Wordpress5.4以前

hogehoge-a.php
)「あいうえおかきくけこ
hogehoge-b.php
)「あいうえおかきくけコ

(↑ 内容がほぼ一緒なのに1部だけ違うから別ファイルにしないといけなかった ↑)

home.php
<?php 
  get_template_part(hogehoge,a);
?>
single.php
<?php
  get_template_part(hogehoge,b);
?>

【現在】Wordpress5.5以降

hogehoge.php
 <?php $text = $args; ?>
「あいうえおかきくけ<?php echo $text; ?>

$argsに値が格納されているので、引っ張り出す。

home.php
<?php
  $text = "こ";
  get_template_part('hogehoge',null,$text);
?>
single.php
<?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以前でも変数を渡す方法があったのでご紹介。

hogehoge.php
<?php
  $text = get_query_var('text');
?>

「あいうえおかきくけ<?php echo $text; ?>
home.php
<?php
  set_query_var('text', 'ko');
  get_template_part('hogehoge');
?>

結果

〇トップページ
→「あいうえおかきくけko

おそまつ!

~ Qiitaで毎日投稿中!! ~
【初心者向け】WEB制作のちょいテク詰め合わせ

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?