ファイル名の付いたテンプレートファイルを読み込んでいます。内で条件分岐タグを使い表示を変えることもできます。それぞれテンプレートファイル化した場合は以下のメリットがあります。ファイル内のコード量が減り見通しがよくなるファイル名でコードがどのページに対応しているかわかる他のコードを誤って消したりすることがなくなるしかし、たった数行のためにファイルを作成するのもメンテナンス性が良くないと思うので、その場合は条件分岐タグを使い、コード量が多く見通しが悪くなってきたらファイルを分けるようにするのがいいと思います。footerは比較的共通したコードを書くことになると思いますが、実際にコードを書いていくとそれ以外にも同じコードを書かなければいけない場面があります。そんな時でもWordPressは柔軟に対応できる優れたテンプレートタグがあります。それが、get_template_part()です。オリジナルのパーツテンプレートファイルを作るget_template_part()はget_header()などと、ほぼ同じ用に使うことができます。get_sidebar()などの違いについて解説します。get_header()あらかじめ決められたファイル名を付けることで読み込んでくれます。この場合、ファイル名がheader.phpのファイルを読み込みます。パラメータ$nameを使った場合は、header-{$name}.phpを読み込みます。get_sidebar()も同様です。get_template_part()あらかじめ決められたファイル名を持たないので、どんなファイル名にも柔軟に対応できます。content.phpというパーツテンプレートファイルをテーマディレクトリに作ったとします。決められたファイル名がないので、get_template_part()にファイル名を教えてあげないといけません。そのため1つ目のパラメータが必須となります。ページのメインコンテンツを部品化したcontent.phpを作った場合、読み込むには以下のように使います。get_footer();12345<?phpget_header();get_template_part('content');get_sidebar();get_footer();get_header()など同じ用にパラメータ$nameも使うことができます。この場合は以下のように使います。'page');get_sidebar();get_footer();このコードではcontent-page.phpを読み込んでいます。get_template_part()を使えば、あらゆるファイル名を付けたテンプレートファイルを読み込んで使うことができます。日本語版テーマディレクトリ内がごっちゃになる?新たな疑問が浮かんでくるのではないでしょうか?コードを分けて管理することができるようになりましたが、テーマディレクトリ内はベーステンプレートファイルとパーツテンプレートファイルがごっちゃになってファイルがいっぱい並んでいるのではないかとそんな問題もget_template_part()は解決してくれます。get_template_part()はテーマディレクトリ直下のファイルだけでなく、1つ目のパラメータにファイルのパスを指定し、ファイルを読み込むこともできます。これを利用すれば新しいフォルダを作ってその中にテンプレートファイルを置くことが可能です。テンプレートファイルをフォルダ分けするテーマディレクトリにベーステンプレートファイルとパーツテンプレートファイルが一緒に並んでいると見分けがつかなくなりますよね。区別するためにフォルダ分けしたいと思います。今回はパーツテンプレートファイルを別フォルダで管理してしまいましょう。フォルダで管理する手順ベースとパーツとなるファイルを分けて管理する手順は、以下の4ステップです。パーツテンプレートファイルを保存するファイルを作る共通するコードを部品化しテンプレートファイルを作るテンプレートファイルをフォルダに移動するベーステンプレートファイルに読み込むコードを書くパーツテンプレートファイルを保存するファイルを作るテーマディレクトリに新しいフォルダを作ります。フォルダ名はわかりやすい名前を付けておきましょう。以下に3つ例を上げておきます。templatespartsviews私の場合は、分かりやすくそのままtemplatesと名前を付けて作成しています。今回はtemplatesというフォルダを作成したとして話を進めます。共通するコードを部品化しテンプレートファイルを作る共通する部分を切り出してテンプレートファイルを作ります。私が作成したテーマの1つは以下のようなファイルに分けています。コメント一覧やコメント投稿フォームテンプレートファイルをフォルダに移動するパーツテンプレートファイルにしたファイルを先ほど作成したtemplatesフォルダに移動させるのですが、ここで1つ注意があります。残念なことにテーマディレクトリ直下のファイルしか認識できないということです。残して、それ以外のファイルをtemplatesフォルダに移動させます。ファイルも別フォルダで管理する方法ベースとパーツきっちり分けるためにどうしても分けて管理したい場合の方法を2つ紹介します。1つ目はget_template_part()を使う方法です。これはもっとも簡単ですが、問題が1つあります。get_header()などにはアクションフックが使えるようになっているので、get_headerにアクションフックを使っているプラグインは動作しなくなるかもしれません。2つ目はfunctions.phpに新しく関数を作成してその関数を使って読み込む方法です。現バージョン3.9.1のget_header()が書かれているところを見てみましょう。この関数は/wp-includes/general-template.php内に書かれています。'/theme-compat/header.php');}上記のコードを参考に以下のような関数をfunctions.phpに作ります。'/theme-compat/header.php');}管理用のフォルダ名を追加しただけの簡単なものです。この関数を使えばアクションフックの問題は解決できると思います。同じような感じで作成すればいいでしょう。Coreベーステンプレートファイルに読み込むコードを書く読み込むコードを書いて表示させてみましょう。例としてsingle.phpに読み込むコードを書いてみます。my_get_footer();上記のコードはまだ完璧ではありません。comments_template()にはパラメータにファイルの場所を指定して読み込む事ができますが、get_search_formには読み込むファイルを指定するパラメータがありません。get_search_form()には、検索フォームを出力するか返すかのオプションのパラメータ$echoしか持っていません。やって別フォルダに移したsearchform.phpを読み込めばいいのか?get_search_form()の書かれたコアファイルを見てみましょう。先ほどのget_header()と同じファイルに書かれています。$result;}コアファイルの259行目にapply_filters()があるのでフィルターフックが使えることが分かります。これを使えば読み込むファイルを変更できそうです。Coreフィルターフックを使って、templatesフォルダ内のsearchform.phpを読み込めるようにfunctions.phpに以下のコードを書いてください。'mkw_get_search_form');locate_template()はファイルを読み込む関数です。フィルターフックでファイルは出力されます。この関数だけだと、$formに入っているタグも出力されてしまうので、引数で$formを受け取れるのでこれを空にして返してあげます。すると空の$formが出力されるだけで結果templates/searchform.phpが読み込むことができています。locate_template()については前回の記事でも少し説明したので参考にしてみてください。フィルターフックやその他についても詳しく知りたい場合は下記のサイトを参考にしてみてください。Webデザインレシピまとめテンプレートファイルはベースとパーツ2種類に分けられるパーツを使うには6種のテンプレートタグを使うオリジナルのテンプレートファイルにはget_template_part()を使うベースとパーツを分かりやすいようにフォルダ分けするこの管理方法を使えば、2種類あるテンプレートファイルを綺麗に分けることができ、重複するコードを少なくできます。編集時のミスも減らせ、ファイルサイズも小さくなるでしょう。あとがきテンプレートファイルが直接表示に関わるものとそうでないものが一緒になっているのが気になっている人は試してみてはいかがでしょうか?functions.phpの管理方法については前回の記事を参考にしてみてください。何か間違いや気づいた点があったらコメントください。/仕事ITマーケティングライフスタイル。