見出し画像

なんか変!?WordPressのトップページはindex.php?home.php?front-page.php?

WordPressのテーマ作成をする上でテンプレート階層という概念を覚える必要があります。

その中でも「プロ」を自称している人でも勘違いしている事が多いトップページにどのファイルを使うか?という話。

HTMLやPHPを勉強した人からするとindex.phpでしょ?と思うはずです。
そうですよね。普通にHTMLでindex.htmlを作ったら最初に表示されますよね?PHPでindex.phpを書けば最初に読み込まれますよね?

しかし、WordPressはちょっと違うんです。
細かい話をするとWordPressのテーマはちょっと違うんです。
※WP本体はindex.phpを最初に読み込みます。

これ、案外知っている人が少ないので「プロ」を目指している人は是非覚えておいてください。

いきなり結論を言っちゃいます。

トップページを固定ページにする場合は「front-page.php」
一覧ページにする場合は「home.php」

です。

スクリーンショット 2019-09-25 20.37.39

WordPressは、「設定 > 表示設定」で、トップページ(ホームページ)の表示の設定が出来ます。

○最新の投稿
○固定ページ

の2つあり、どちらかを選ぶ事が可能です。

「最新の投稿」は、通常トップページに時系列に記事が並びます。
ブログとして使う場合はこちらの設定ですね。

この場合は、「home.php」を使用します。

「固定ページ」を選ぶと「ホームページ」と「投稿ページ」を選ぶ事が可能です。
「ホームページ」とはトップページのことです。この場合は「front-page.php」を使用します。
「投稿ページ」は記事一覧ページのことです。前述の「最新の投稿」の際にトップページだった物(新着記事一覧)が固定ページのトップページを作ったことによって居場所がなくなってしまったので別ページに表示させることが出来ます。
この場合は、「最新の投稿」の時と同じく「home.php」を使用します。

じゃ、index.phpって何なのよ?

ですよね。何なんでしょうね。
私も最初は悩みました。

テンプレート階層の考えで言うと「index.phpとは何もない場合に表示させるテンプレート」です。

WordPressのテンプレートは、カテゴリーページは「category.php」が使われたり、投稿ページは「single.php」が使われたり、一定のルールを元にテンプレートを呼び出します。
その際に、該当するテンプレートがない場合に表示されるのが「index.php」です。

なんでこんなめんどくさいことになってるの?

確かに…。
トップページが「index.php」の方が分かりやすいじゃないか!

これは、WordPressの歴史に関係します。

皆さんご承知の通り、元々、WordPressはブログとして生まれました。

ブログなので一覧ページと記事ページがあればよかったので最初はindex.phpとsingle.phpしかありませんでした。
もちろん、その頃はトップページはindex.phpでした。

その後、カテゴリーページと同じじゃなくてトップページだけ表示を変えたい。
って要望が高まりhome.phpが誕生します。

また、時代が流れてWordPressをブログではなくWebサイトとして使いたいという要望が増えました。
トップページに一覧が並ぶのではなく、固定のコンテンツを配置したいという要望に応えるためにfront-page.phpが生まれた訳です。

※ここらへんはうろ覚えなので、間違っていたら詳しい方コメントでご指摘いただければ幸いです。

まとめ

私の個人的な考えとして、「同業者に笑われるようなコーディングはしたくない」
ま、妥協することは多々ありますが…

あなたが間違ったテンプレートを使って納品したサイトを数年後同業者が見たときに「え?シロウトじゃないすか。」って言われたくないですよね。


この記事が気に入ったらサポートをしてみませんか?