web-dev-qa-db-ja.com

単にtemplate.phpファイルを使用するよりget_template_part()が望ましいのはいつですか?

wordpress.stackexchange.comのこの投稿 TwentyTenテーマで示されているように、get_template_part()を使用することをお勧めします。私が得た一般的なコンセンサスは、それがすべての状況で必ずしもベストプラクティスではないということでした。

それでは、この関連する質問は次のとおりです。get_template_part()wouldを使用することをお勧めしますが、単に個別のtemplate.phpファイルを定義するよりも例を教えてください。

たとえば、archive.php、single.php、page.phpのいずれかを定義できます。または、loop-archive.php、loop-single.php、loop-page.phpを定義できます。

どのような状況でget_template_part( 'loop'、 'single')を使用し、単純にsingle.phpを定義するのではなくloop-single.phpを利用することが望ましいでしょうか。

6
Tom Auger

get_template_partを使用するための推奨されるアプローチは、そうでなければすべてのテンプレートで頻繁に繰り返されるコードの一部を含めることです。 archive.php、search.php、single.phpなどに含めたい条件文がループ内で定義されているかのように.

また、子テーマがそのファイルを上書きして、より具体的なファイルを追加することもできます。たとえばget_template_part( 'loop', 'single' )を使用していて、テーマにloop.phpという名前のファイルしかない場合は、子テーマにloop-single.phpという名前のファイルを含めて、loop.phpをオーバーライドすることができます。

基本的に、ヘッダー、サイドバー、またはフッター以外のテンプレートファイルのカスタムインクルードタグです。

3
Chris_O

Get_template部分を使用しないことに正当な理由があるとは思わない。それが存在する前は、WordPressのテーマは繰り返しコードで埋め尽くされており、非常に時間がかかり、大きな変更を加えるのは困難でした。常に投稿を表示するために使用される1つのループファイルを持つことは、子テーマとテーマを「フォーク」したい人の両方にとっての天の恵みです。 Twenty Elevenテーマ(現在開発中)のコードを見ると、テンプレートパーツも投稿フォーマットに拡張されていることがわかります。また、 "The Loop"がテンプレートから削除され、呼び出し側のテンプレートに配置されていることもわかります。私はこれが投稿コンテンツにテンプレートパーツを使用する最良の方法であり、Twenty Tenよりはるかに柔軟であると思います。

他のテンプレートはget_template_part()とほとんど同じように動作することをご存知ですか。私は方法を説明した記事を書いた: http://wordpress.mfields.org/2011/adding-context-to-template-parts/ /

私見親子のテーマは、より柔軟であるほど良いです。

2
mfields

そのコードを複数のテンプレートで使用する場合は、get_template_part()を使用する必要があります。例えば。ヘッダー、ナビゲーションメニュー、またはサイドバー。

テンプレートが他のテンプレートからのいくつかの行以外にも異なる場合は、テンプレートを使用する必要があります。

私は個人的に私の小さなベーステーマの中で私のクエリ特有のテンプレート部分をロードするためにコンディショナルタグを含む単純なindex.phpを使うだけです。より大きなテーマでは私は私のindex.phpファイルにフックし、条件付きで私のテンプレート部分にフックします(しかしセットアップははるかに複雑です - ほとんどが real cmsもの)。

1
kaiser

Kaiserの答えを基にして、get_template_part()は繰り返しコードに役立ちます。たとえば、メインのテンプレート部分のほとんどに、おそらく非常によく似たループがあります。そのループをloop.phpというファイルに入れてget_template_part('loop');を呼び出すということは、次にあなたのサイトのループの中でコードを変更したいときに、1ダースほどのテンプレートファイルではなく1度に1回行うということです。

それがget_template_part()の一つの大きな利点です。私の考えでは、もう1つ、そしてもっと重要なことは、それが親子テーマでうまく機能するということです。子テーマがあり、子テーマのループコードを変更したいがテンプレートの残りの部分を変更したくない場合は、loop.php例をもう一度使用して、子の1つのloop.phpファイルをオーバーライドするだけで済みます。 1ダースほどの他のテンプレートファイルではなくテーマ。

1
John P Bloch