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


36

私は実際に困惑しているindex.phphome.phpfront-page.php。多くの場合、私が持っていたとしても、index.phpそれを上書きしfront-page.phpます。しかし、最近、私はに気づきましたhome.php

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

Codex のテンプレート階層を読みました。ページテンプレートと私の質問を混同しないでください。


1
ガットはこれで@rarst:rarst.net/wordpress/front-page-logic。あなたを助けるかもしれません。
Mayeenul Islam

回答:


34

フロントページロジックは、WordPressの最も複雑な機能の1つであり、説明と要約が非常に困難です。前のコメントで述べたように、私はフロントページのロジックのチートシートをまとめるためにひどい時間を費やしました。

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

違いは何だhome.phpとはindex.php

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

index.phpキャッチオールテンプレートです。これは、テンプレート階層のすべてのブランチでの最終的な選択肢であり、アーカイブと単一ビューの両方について、他に当てはまらない場合に選択されます。

投稿インデックスのみが使用できますhome.php他のすべてのコンテキストはを使用する可能性がありますindex.php

使用するのに理想的な条件は何だhome.phpよりは、index.php

home.php投稿インデックスをカスタマイズするために使用します。

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

一部のテーマでは、空index.phpにすることを選択し、考えられるすべてのケースに対してより具体的なテンプレートを使用するようにしているため、使用する必要はありません。

を使用する理想的な条件は何front-page.phpですか?

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

これは優先度の高いテンプレートであるため、テーマに含まれている場合は、静的フロントページの任意のテンプレートを選択できません。このため、公開されているテーマに含まれることはほとんどありません(正しい)。

ページテンプレートよりも構成が簡単なので、プライベートプロジェクトでの使用が最適です。

front-page.phpthen を使用しているとき、その特定のタスクindex.phpは私のために何をしていますか?

index.php、まだ他のすべての場合のためのすべてのテンプレートがキャッチ。

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


28

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

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

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

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

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

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

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

  • home.php
  • index.php

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

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

だから、私がこれを正しくしているmy-template-1場合、フロントページが最新の投稿に設定されているときにテンプレートを使用my-template-2し、フロントが静的ページに設定されているときに使用することはできません(コーディングなし)?
ジャックヨハンソン

18

これはすべて、テンプレート階層を徹底的に読んだ結果です。

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


2
home.php場所に関係なく、ブログ投稿インデックスに使用されます。フロントページがブログ投稿インデックスを表示するように設定されているhome.php場合front-page.phpは、使用されます(存在しない場合)。
チップベネット

10

要するに:

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

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

index.phpテンプレートファイルは、フォールバックのテンプレートです。他の適切なテンプレートが利用できない場合の最後の手段として使用されます。たとえば、もしなければfront-page.phphome.phpthen index.phpが使用されます。これは、行方不明archive.phpなどにも当てはまりますsingle.php

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

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

サイトのランディングページに使用されるテンプレートは何ですか?

front-page.phpテンプレートは、存在する場合、サイトのメインのフロントページ(例えばのために使用されますhttp://www.example.com/)。存在しない場合は、home.php代わりに使用されます。テンプレートファイルfront-page.phphome.phpテンプレートファイルの両方が欠落している場合、index.phpフォールバックテンプレートが使用されます。

ブログページに使用されるテンプレートは何ですか?

WordPressでは、ランディングページ(例:)とは異なるページに「ブログ」ページ(最近の投稿を一覧表示します)を作成できますhttp://www.example.com/blog/。そのため、サイトでこれが当てはまる場合、ブログページは常にhome.phpテンプレートを使用します。場合はhome.php、次に存在しないindex.php代替テンプレートが使用されます。

ランディングページとブログページの構成方法

行き、あなたのフロントページに表示するコンテンツを設定するには、WordPressの管理の下で、[ツール]> [読書は、あなたが「そこに設定することができますフロントページが表示され、静的なページ、またはあなたの最新の投稿を表示するように」。

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

ここに画像の説明を入力してください


3

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のテンプレート階層


2

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

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

結果は非常に長くなりますが、参照またはチートシートとして使用できます。

フロントページの表示

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

エディターへの注意:ここでテーブルをコピーして貼り付けようとしましたが、HTMLの代わりにマークダウン形式が必要です。可能であれば、マークダウンに変換してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.