第14話

よく使うファイルをテンプレート化して効率よくカスタマイズしよう!

こんにちは!Takuya.B(@TB_IQ)です。

以前、functions.phpに記述する内容はバカ正直にfunctions.phpに書かなくてOKという旨の記事を書いた。別ファイルに記述を書き、それをfunctions.phpで呼び出せば同じことである。

[mylink id="4900"]

functions.phpは言うなれば独自の機能を詰め込んだファイルだ。しかし、このようなファイル分割はfunctions.phpに限った話ではない。デザイン的なファイル(header.phpやsingle.php)も分割することができる

スポンサーリンク

WordPressはパズルのようなもの

WordPressで構築されているサイトはパズルみたいなものだ。まずindex.phpというファイルが呼び出され、その中でヘッダー部分の記述があるファイル(header.php)やサイドバー部分(sidebar.php)を呼び出している。

これらを呼び出すときに使うのがテンプレートタグという関数がWordPressでは用意されている。例えば、

<?php get_header(); ?>

と書けば、header.phpが呼び出される。フッターやサイドバーを呼び出すときも同様だ。

  • header.php → get_header()
  • footer.php → get_footer()
  • sidebar.php → get_sidebar()

WordPressの自作テーマを作るとき、まず触れることになるのは上記の3つのテンプレートタグだろう。

では、header.phpやfooter.phpだけでなく、たとえば『onigiri.php』というファイルを呼び出したい場合にはどうすればよいのかというと『get_template_part()』という関数を使う

テンプレートタグ:get_template_part()

get_template_part()というテンプレートタグを使うと任意のファイルを呼び出すことができる。

基本的な使い方

基本的な使い方は次の通りだ。

<?php get_template_part('onigiri'); ?>

このとき呼び出されるファイル(ここでは『onigiri.php』)とget_template_part()を記述しているファイルが同じディレクトリ(フォルダ)に存在していることが条件なので注意が必要だ。

『.php』という拡張子も不要なのであわせてご注意ください!

別のディレクトリにある場合

get_template_tag()を使うファイルと呼び出したいファイルが別のディレクトリにある場合の書き方は次のとおりだ。ここでは『onigiri.php』というファイルが『favorite』ディレクトリにある場合を考えてみよう。その場合の呼び出し方は次のようになる。

<?php get_template_part('favorite/onigiri'); ?>

スラッシュで区切れば良いだけだ。

スポンサーリンク

ハイフンで繋がっているファイルを読み込む場合

例えば、『onigiri-tabetai.php』というファイル名にハイフンが含まれる場合は少し注意が必要だ。

この場合のget_template_part()の使い方は次のようになる。

<?php get_template_part('onigiri', 'tabetai'); ?>

そう、カッコの前後を別々にシングルコーテーションでくくらなければならない

では最後に、この『onigiri-tabetai.php』というファイルが『favorite』というディレクトリの中にあるときは、前項の書き方と組み合わせて次のように書けば良い。

<?php get_template_part('favorite/onigiri', 'tabetai'); ?>

get_template_part()のこの4つの書き方を覚えておけば、ファイルの呼び出しに悩むことはおそらく無いだろう。

スポンサーリンク

あとがき

このget_template_part()は非常に便利だ。例えば、記事一覧を出力するためのループ処理。これをindex.phpに書いてさらにメタ情報なども出力させようとするとゴチャゴチャしてしまいスッキリしない。

そこでループ部分の記述をごっそり切り取ってloop.phpやindex-loop.phpといったファイルを作って貼り付ければ良い。そうすれば後はget_template_part()でファイルを呼び出すだけだ。

他にも個別記事の上下に自作のSNSシェアボタンを作っているなら、これもファイル分割して呼び出せばいい。とにかく便利なのだ。

是非とも皆さんも使ってみてください!

というわけで、次回もよしなに!