WordPressカスタマイズに必須!テンプレートファイルを理解する
WordPressを自分でカスタマイズし、オリジナルのテーマを作成する場合はテンプレートというものを理解することが必須になります。Wordpressのテンプレートとはロボットのパーツのようなもので、ウェブページを形成する際に使われるヘッダーやフッターなどをそれぞれパーツ化し、組み合わせる事で、ひとつのウェブページを表示します。また、Wordpressにはテンプレート階層というものも存在します。階層については「WordPress テンプレート階層とは〜テンプレート階層の理解を深める〜」で紹介しています。
CONTENTS
1.Wordpressを表示するテンプレートの仕組み
基本的によく使われるパーツ化されたテンプレートのことをモジュールテンプレートといいます。例としてheader.php、footer.php、sidebar.phpなどがありますが、これらのパーツを下図のようにpage.php(固定ページ)single.php(個別投稿)などに記述することでひとつのwordpressのウェブページを表示します。
例)page.php(固定ページに各パーツを配置)
全ページにおいて表示する共通の部分をパーツ化することで、共通部分の修正をした場合に全ページを修正する必要はなく、ひとつの修正ですべてのページを変更することができるということでメンテナンス性が向上します。また、どうしてもここのページだけ共通部分のヘッダーを変えたいといったような場合はheader-○○.phpのように新たにファイルを作成することで可能になります。
テンプレートファイルがなくてもページは表示される
固定ページだとpage.php個別投稿だとsingle.phpのようにテンプレートファイルを分けていますが、このページごとのテンプレート(テーマテンプレート)がない場合はindex.phpが表示されます。(階層について詳しくは別記事「WordPress テンプレート階層とは〜テンプレート階層の理解を深める〜」をご覧ください)なので、究極を言うと例えばindex.phpにすべての記述をしてしまえば。ウェブページとして表示することが出来ます。しかし、それではコードが長くなりすぎて、それぞれでデザインを変えたい場合も変えれない。メンテナンス性にも悪影響です。そういうところを解消するのがテンプレートファイルです。
2.テンプレートの種類
モジュールテンプレートファイル
モジュールのテンプレートは必要に応じて各ページで呼び出します。主に下記のような種類があります。
- ヘッダー header.php
- フッター footer.php
- サイドバー sidebar.php
- 検索フォーム searchform.php
- コメント comments.php
テーマテンプレートファイル
ページごとのテンプレートはページを表示するためのテンプレートで、テーマテンプレートといいます。実際に書いている投稿記事や固定ページはこのテンプレートをもとに表示されます。
- メインテンプレート index.php
- フロントページ front-page.php、home.php
- 固定ページ page.php
- 個別投稿ページ single.php
- カスタム投稿タイプ archive-$posttype.php($posttypeは任意の名前がはいります)
- アーカイブ archibe.php
- カテゴリー category.php
- タグ tag.php
- 検索結果 search.php
- 404エラー 404.php
おもに使われるファイルをあげてみました。より細かいテンプレートファイルは「WordPress codex日本語版テンプレート階層」をご覧ください。
3.header.phpやfooter.phpのテンプレートファイルをインクルードする
実際にパーツとなるテンプレートファイルを固定ページや投稿ページのファイルに読み込み(インクルード)しなければなりません。その場合は下記のタグを記述します。
1 2 3 4 5 |
<?php get_header(); ?>//ヘッダー <?php get_footer(); ?>//フッター <?php get_sidebar(); ?>//サイドバー <?php get_search_form(); ?>//検索フォーム <?php comments_template(); ?>//コメント |
ヘッダーやフッターを固定ページや投稿記事ごとに変えたい場合は、ぞれぞれのファイルに記述を追加する必要があります。例えば固定ページ用にheader-page.phpを作成した場合は以下のように読み込みます。
1 |
<?php get_header('page'); ?> |
他フッターやサイドバーなども同様に('')の中にハイフンの後のファイル名を記述することで、「このページには('page')を読み込む」と指示を与え、表示することができます。ページによってヘッダーのデザインを変えたい時などに使います。
他のテンプレートファイルを読み込む場合
また他に、ヘッダーやフッター以外のテンプレートファイルを読み込む場合は以下のテンプレートタグを使います。
1 |
<?php get_template_part(); ?> |
{$slug}.phpや{$slug}-{$name}.phpなどヘッダーやフッター以外のテンプレートファイルを読み込みます。各ページに必ず入れたい内容がある場合やループ処理などを表示したい場合などに使えます。
合わせてご覧ください。「WordPress テンプレート階層とは〜テンプレート階層の理解を深める〜」