「get_template_part()で変数を渡したい」
こんな悩みにお答えします。
WordPress5.5からget_template_part()で変数を渡せるようになりました。
<?php $num = "090-0000-0000"; get_template_part( "contact", "department", $num ); ?>
以前はget_template_part()で変数を渡すことができませんでした。
この記事では、以下の内容を解説しています。
- get_template_part()で変数を渡す方法
- get_template_part()の使い方
- get_template_part()を使わずに変数を渡す方法
(古いバージョンのWordPress対応が必要な場合)
get_template_part()で変数を渡すことができると、変数が含まれるサイトでもファイルの共通化ができるようになり、複雑なサイトの保守をしやすくなります。
get_template_part()で変数を渡す方法
get_template_part()はWordPress5.5から変数を渡すことができるようになりました。
デザインは同じでテキストや数字がかわる場合などで使います。
WordPressでコーポレートサイトをつくる場合、問い合わせ電話番号やメールアドレスが違うということが考えられます。
テーマディレクトリ直下のテンプレートファイル「contact-department.php」を読み込みたい場合、3番目の引数に渡したい値を入れます。
3番目の引数は読み込むページによって変更できます。
<?php $num = "090-0000-0000"; get_template_part( "contact", "department", $num ); ?>
以下のように書くこともできます。
<?php $num = "090-0000-0000"; get_template_part( "contact-department", null, $num ); ?>
テンプレートファイル「contact-department.php」の「$args」に値が入ります。
<?php echo $args; ?> // 以下のように表示されます。 090-0000-0000
変数、配列も渡すことができます。
- POINT
- get_template_part()で値を渡すには、3番目の引数に渡したい値を入れる。
get_template_part()の使い方
変数の受け渡しが不要な場合は、こちらの方法になります。
<?php get_template_part( "contact", "department" ); ?>
以下のように書くこともできます。
<?php get_template_part( "contact-department" ); ?>
テンプレートファイルをまとめたフォルダをつくる場合は以下のようにも書くことができます。
<?php get_template_part( "parts/contact-department" ); ?>
ヘッダー、フッター、サイドバーは専用の関数が用意されているのでそれを使います。
// ヘッダー <?php get_header(); ?> // フッター <?php get_footer(); ?> // サイドバー <?php get_sidebar(); ?>
パターンが複数ある場合は、引数にスラッグを指定したテンプレートファイルを用意し、以下のように読み込みます。
// ヘッダー header-1.phpを読み込む <?php get_header( "1" ); ?> // フッター footer-recruit.phpを読み込む <?php get_footer( "recruit" ); ?> // サイドバー sidebar-company.phpを読み込む <?php get_sidebar( "company" ); ?>
引数に使うテンプレートファイルのファイル名は、できるだけ数字などは避け、どこで使うものなのかがわかるような名前にするとわかりやすくなり、保守、メンテナンスがしやすくなります。
get_template_part()を使わずに変数を渡す方法
WordPressはできるだけ最新バージョンにするのがセキュリティなどの面で安心ですが、なんらかの理由で古いバージョンのWordPress対応が必要な場合はこちらの方法になります。
引数など必要なく1つのファイルと同じように変数を書いておけばそのまま読み込まれます。
こちらの場合、読み込むテンプレートファイルは拡張子(.php)まで書く必要があります。
<?php $num = "090-0000-0000"; include locate_template( "contact-department.php"); ?>
受け取るときも特に引数や変数名をそのまま読み込めます。
<?php echo $num; ?> // 以下のように表示されます。 090-0000-0000
まとめ
get_template_part()で変数を受け渡す方法について解説しました。
- get_template_part()で変数を渡す方法
- get_template_part()の使い方
- get_template_part()を使わずに変数を渡す方法
(古いバージョンのWordPress対応が必要な場合)
get_template_part()で変数を渡すことができると、変数が含まれるサイトでもファイルの共通化ができるようになり、複雑なサイトの保守をしやすくなります。
以下の記事を参考にさせていただきました。