WordPressテーマのindex.phpはインデックスファイルではない
テーマのindex.phpはインデックスファイルではない
WordPressテーマのindex.phpとは、一般的なWebサイトに含まれるindex.phpやindex.htmlのようなインデックスファイルとは違います。
名前はindex.phpですが、サイトを表示したときにテーマのindex.phpが最初に表示されるわけではないということです。
ただし、基本的にはindex.phpにトップページのレイアウトが記述してあったり他のテンプレートを代用できるように投稿を一覧するPHPのコードが書いてあったりするので、結果として、一般的なWebサイトのインデックスファイルと同じような機能に見える場合もあります。
そのため、index.phpがインデックスファイルだと勘違いしてしまうかもしれませんが、実際は違うので注意が必要です。
本当の意味でのインデックスファイルはWordPressをインストールしたフォルダにあるindex.phpです。興味がある方は、index.phpから読み込んでいるファイルを追いかけてみてください。
テーマの必須ファイルとしてのindex.php
index.phpはテーマにとって必須ファイルです。内容はともかく、テーマフォルダには必ずindex.phpを含める必要があります。ちなみに、WordPressテーマの必須ファイルは次の2つです。
- index.php
- style.css
もちろん、この2つのファイルだけが存在していても実用的ではないので、構成ファイルが2つというテーマはほとんどないと思いますが、仕組みとしては上記の2ファイルがあればテーマは作成可能です。
index.phpが必須というのは、他のテンプレートの代用をするということです。
たとえば、トップページのレイアウトにはfront-page.phpが使われますが、存在しない場合はhome.phpが使われます。home.phpも存在しない場合などは、最終的にindex.phpが使われます。
この、あらゆる種類のテンプレートが存在しなかった場合に「最終的に使われる」テンプレートがindex.phpです。
固定ページのpage.phpや個別記事のsingle.phpなどのように用途が決まっているわけではありませんが、最後の最後に表示されるテンプレートがindex.phpです。ですから、実用的かどうかはともかくとして、index.phpだけはテーマに必ず含める必要があるのです。
archive.phpやcategory.phpが存在しないテーマも
index.phpが他のテンプレートを代用してくれることを利用して、いくつかのテンプレートを作らないという効率的な制作手法もあります。たとえば、index.phpに最新記事を一覧するコードを書いておけば次のようなページの代用として機能するかもしれません。
- トップページ
- 投稿ページ
- アーカイブページ
- 検索結果ページ
そんなわけで、アーカイブページのarchive.phpやcategory.phpが存在しないテーマはよくあります。それらのレイアウトはindex.phpが代用しているということです。
より実用的なテーマではindex.phpの中で上記のページタイプごとにレイアウトを切り替えているため、複雑なコードが記述されている場合があります。
実用的なテーマでindex.phpの解読が難しく感じるのはそのためです。
そのようなindex.phpを解読するには「if」という構文の理解が必須です。条件に応じて別々のレイアウトを定義したり、表示する文字を切り替えるときに使われます。
よくあるパターンでは、「カテゴリーアーカイブの場合はA、タグページの場合はB」のように条件に応じて別々のレイアウトが定義されています。PHPに慣れていない方は、次のような本を参考に、ifの仕組みから理解しましょう。