web-dev-qa-db-ja.com

テンプレート階層:index.php、front-page.php、home.phpと混同されています

私は本当にindex.phphome.phpそしてfront-page.phpと混同しています。多くの場合、index.phpを持っていても、それをfront-page.phpで上書きします。しかし、最近、私はhome.phpを知ったようになりました。

  • home.phpindex.phpの違いは何ですか?
  • home.phpよりindex.phpを使用するのに理想的な条件は何ですか?
  • front-page.phpを使うのに理想的な条件は何ですか?
  • 私がfront-page.phpを使っているとき、index.phpが私にしている特定のタスクは何ですか?

Codexの Template Hierarchy を読んだことがあります。私の質問とPage Templatesを混同しないでください、私は理解しています、alHamduLILLAH.

32
Mayeenul Islam

フロントページロジックは、WordPressの最も分かりにくい機能の1つであり、説明や要約が非常に難しいです。後ろのコメントで述べたように、私は自分の フロントページロジックのチートシートをまとめるために不屈の時間を費やしました それのために。

しかし、これは一般的なスレッドなので、私があなたが持っていたそれらの非常に具体的な質問に答えようとしましょう。

home.phpindex.phpの違いは何ですか?

home.phpは投稿インデックスのテンプレートです(ネイティブの投稿投稿タイプのアーカイブ。これはWPの特別な場合です)。 WPは、投稿がサイトのルートに表示されているか、専用の投稿ページに表示されているかに関係なく、投稿のインデックスを検索しようとします。

index.phpは包括的なテンプレートです。これはテンプレート階層のすべての分岐における最終的な選択であり、アーカイブと特異ビューの両方に対して、他に何も当てはまらない場合に選択されます。

home.phpを使用できるのはpostsインデックスだけですが、 all 他のコンテキストではindex.phpが使用される可能性があり、今後も使用される予定です。

home.phpよりindex.phpを使う理想的な条件は何ですか?

投稿のインデックスをカスタマイズするにはhome.phpを使います。

index.phpを使用して、テーマの中で最も一般的なテンプレートを提供します。これは、あらゆるものの表示に適しています。

いくつかのテーマは空のindex.phpを持つことを選択し、それらがすべての可能なケースに対してより具体的なテンプレートを持つようにしているので、決して使われる必要はありません。

front-page.phpを使うのに理想的な条件は何ですか?

有効な場合、front-page.phpはルートまたは静的フロントページの投稿インデックスに使用されます。

優先度の高いテンプレートなので、themeが持っていれば静的フロントページに任意のテンプレートを選択することはできません。このため、それは公に発表されたテーマには含まれていません(これは正しいです)。

ページテンプレートよりも設定が簡単なので、これを使用するのがプライベートプロジェクトです。

私がfront-page.phpを使っているとき、index.phpが私にしている特定のタスクは何ですか?

index.php それでも 他のすべてのケースではall allテンプレートです。

静的なフロントページ(front-page.phpが適用される)を使用している場合、投稿ページはhome.phpを使用してからindex.phpを使用しようとします。

30
Rarst

front-page.phpファイルは サイトのフロントページ テンプレートです。 get_option( 'show_on_front' )pageに設定されているかpostsに設定されているかにかかわらず、常にあなたのサイトのフロントページで使用されます。

home.phpテンプレートファイルは ブログ投稿インデックス テンプレートです。ブログ投稿インデックスがサイトのフロントページに表示されているか、別のページに表示されているかに関係なく、常にブログ投稿インデックスの表示に使用されます。

front-page.phphome.hppの両方が存在し、get_option( 'show_on_front' )postsに設定されている(つまり、サイトのフロントページにブログ投稿インデックスが表示されている)場合、front-page.phpファイルがhome.phpファイルよりも優先されます。

index.phpファイルは、 Template Hierarchy 内のすべてのコンテキストの デフォルトフォールバックテンプレート です。より具体的なテンプレートファイルが現在のコンテキストに存在しない場合にのみ使用されます。

サイトフロントページ のテンプレート階層は次のとおりです。

  • front-page.php
  • 'page' == get_option( 'show_on_front' ):ページ階層
  • 'posts' == get_option( 'show_on_front' ):ブログ投稿インデックス階層

ブログ投稿インデックス のテンプレート階層は次のとおりです。

  • home.php
  • index.php

pages のテンプレート階層は次のとおりです。

  • カスタムページテンプレート
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php
25
Chip Bennett

これらすべては テンプレート階層 の徹底的な読みから来ています。

次の場合はhome.phpが使用されます。

  • あなたのサイトのフロントページは投稿のリスト、またはを表示するように設定されています。
  • そしてテーマはhome.phpファイルを持っています

最後の条件が満たされていない場合、つまりテーマにhome.phpファイルがない場合 - index.phpがロードされます。

次の場合はfront-page.phpが使用されます。

  • 静的フロントページが設定されている
  • 訪問者はあなたがあなたの "静的ホームページ"(すなわちhttp://example.com/)として定義したページに行き、そして
  • テーマはfront-page.phpファイルを持っています

最後の条件が満たされていない場合、つまりテーマにfront-page.phpファイルがない場合 - index.phpがロードされます。

要約すれば

投稿のリストをカスタマイズしたい場合は、home.phpを使用してください。
静的ホームページをカスタマイズしたい場合は、front-page.phpを使用してください。

18
Pat J

要するに:

  • 適切なテンプレートが見つからない場合、index.phpは代替テンプレートのみです。
  • home.phpはブログに使用されます(最近の投稿のリスト)
  • ランディングページにfront-page.phpが使用されています

ユニバーサルindex.phpテンプレート

index.phpテンプレートファイルは代替テンプレートです。他の適切なテンプレートが利用できない場合、これは最後の手段として使用されます。たとえば、front-page.phphome.phpもない場合は、index.phpが使用されます。これは、archive.phpsingle.phpなどがない場合も同様です。

front-page.php VS home.phpについて

front-page.phphome.phpテンプレートの違いは、その名前が示すように、サイトのメインフロントページとしてfront-page.phpが使用されているのに対し、home.php Blog セクションのホームになることを目的としているということです。

自分のサイトのランディングページにはどのようなテンプレートが使用されますか。

front-page.phpテンプレートが存在する場合、それがサイトのメインフロントページに使用されます(例:http://www.example.com/)。存在しない場合は、代わりにhome.phpが使用されます。 front-page.phphome.phpの両方のテンプレートファイルが見つからない場合は、index.phpの代替テンプレートが使用されます。

私のブログページにはどのようなテンプレートが使用されますか?

WordPressでは、ランディングページ(例:http://www.example.com/blog/)よりも別のページに「ブログ」ページ(最近の投稿がリストされます)を持つことができます。あなたのサイトでこれが当てはまるなら、Blogページは常にhome.phpテンプレートを使うでしょう。 home.phpが存在しない場合は、index.php代替テンプレートが使用されます。

ランディングページとブログページを設定する方法

あなたのフロントページに表示するコンテンツを設定するには、 WordPress Admin Tools> Reading にアクセスし、 "Front Page Displays"を設定して静的ページを表示しますページ、またはあなたの最新の投稿。

フロントページに静的なページを表示することを選択した場合は、どのページをBlogページのプレースホルダーとして使用するかを設定することもできます(これはhome.phpテンプレートを使用します)。

enter image description here

10

Wordpressテンプレートの階層構造 からの引用

ホームページ表示

デフォルトでは、WordPressはあなたのサイトのホームページにあなたの最新のブログ記事を表示するように設定します。このページはブログ投稿インデックスと呼ばれます。ブログ投稿を別の静的ページに表示するように設定することもできます。テンプレートファイルhome.phpは、ブログ投稿インデックスがフロントページとして使用されているか別の静的ページで使用されているかにかかわらず、ブログ投稿インデックスをレンダリングするために使用されます。 home.phpが存在しない場合、WordPressはindex.phpを使用します。

  1. home.php
  2. index.php

注意:front-page.phpが存在する場合、それはhome.phpテンプレートを上書きします。

フロントページ表示

Front-page.phpテンプレートファイルはあなたのサイトのフロントページをレンダリングするために使用されます。フロントページのテンプレートはブログ投稿インデックス(home.php)テンプレートよりも優先されます。 front-page.phpファイルが存在しない場合、WordPressは設定→読み取りの設定に応じてhome.phpまたはpage.phpファイルを使用します。どちらのファイルも存在しない場合は、index.phpファイルが使用されます。

1. front-page.php - [設定]→[閲覧]のフロントページ表示セクションで設定した「最新の投稿」または「静的ページ」の両方に使用されます。

2. home.php - WordPressがfront-page.phpを見つけることができず、フロントページの表示セクションに「最新の投稿」が設定されている場合は、home.phpを探します。さらに、WordPressは、投稿ページがフロントページの表示セクションに設定されているときにこのファイルを探します。

3. page.php - 表紙表示部に「表紙」を設定した場合。

4. index.php - フロントページの表示欄に「最新の投稿」が設定されているがhome.phpが存在しない、またはフロントページが設定されているがpage.phpが存在しない場合。

ご覧のとおり、WordPressがたどる道にはたくさんの規則があります。上の表を使用するのがWordPressが何を表示するかを決める最善の方法です。

テンプレート階層図: Wordpress template hierarchy

3
samix73

さまざまなフロントページの表示オプションが設定されている場合は、次の各ページでどのテンプレートを使用するかをテストすることにしました。

  • example.net
  • example.net/home/
  • example.net/blog/

結果はかなり長いですが、参考資料またはチートシートとして使用できます。

Front page displays 

ソース: front-page.phpとhome.phpテンプレートはWordPressでどう違うのですか?

編集者へのメモ: ここにテーブルをコピーして貼り付けようとしましたが、HTMLではなくマークダウン形式が必要です。可能であれば値下げに変換してください。

2
henrywright