web-dev-qa-db-ja.com

テーマのテンプレートは、テーマのindex.phpを再利用するのではなく、複数のエントリポイントPHPファイルとして構成されているのはなぜですか。

私はここ数週間で私自身のテーマを開発し始め(そしてここ1年であちこちでWP機能を抽出し)、そして私はWPの構造を見つけていますひどい冗長なテンプレート。

確かに、技術的には、ブログはWP機能、メインのWP_Queryオブジェクト、そしていくつかのグローバル変数の準備をロードするために上のどこかで始まります。テンプレートファイルを遠くに分割します。

  • 404.php;
  • archive.php;
  • index.php;
  • single.php;
  • page.php;
  • search.php;
  • ...など

これらのファイルは基本的に、Header、Sidebar、Footerを取得するためにたくさんのPHPコードを複製しています。

Header Sidebar フッターを含む1つのindex.phpファイルがある方がきれいではないでしょうか。 ...そしてindex.phpファイルの中 - あなたは内容をどのように見せるか決めることができますか?

別々のファイルを用意する必要性を理解しているかどうかわかりません。

<head>タグのタイトルを変更する必要がある場合は、 output-buffering ob_start()およびob_end_clean())の力を使用して投稿の最初/ページ/単一の投稿/にしないでください。検索結果...このテクニックを使用してパフォーマンスの問題はありますか?

自分のテーマをモバイルフレンドリーにして RSSフィードリーダーに読みやすくしたい場合、問題が発生することはありますか?

--------------編集:

ユーザーがどのセクションにアクセスしているかを検出するためのPHPメソッド(例:is_single()is_page()is_archive()is_home()など)があるため、この質問を取り上げます。これらは私のindex.phpファイルの中心的な目的を達成するために使われる可能性があります。

2
bigp

テーマテンプレートファイルは、 WordPressテンプレート階層 のため、このように編成されています。すべてのプライマリテンプレートファイルは最終的にindex.phpにフォールバックされるので、only the index.phpプライマリテンプレートファイルを使用することは確かに可能です。どちらの方法を使用しても利点と欠点があります。

一般的に言って、テンプレートファイルを定義することの有用性/効率はテーマの反比例 _に対して文脈上の複雑さです。テンプレート階層で定義されているように、テーマの出力がコンテキストに基づいて変更されない場合は、only _ index.phpファイルを使用しても意味があります。ただし、index.phpの中でクエリベースの条件付きテンプレートタグ(例:is_single()is_archive()is_category()is_404()など)のみを使用した場合、ますます複雑でコンテキスト固有の出力を実装することはますます困難になります。

しかし、これは悪い考えです。

<head>タグのタイトルを変更する必要がある場合は、output-bufferingの力(ob_start()およびob_end_clean())を使用して最初の投稿/ページ/単一の投稿を取得してください。 /検索結果...このテクニックを使ったパフォーマンスの問題はありますか?

出力バッファリングは不要です。以下のいずれかの方法を使用してください。

  1. 状況に応じてwp_title()出力を変更するためのthe_titleフィルタフック
  2. 文脈上定義された変数をwp_title()テンプレートタグに直接渡します
3
Chip Bennett

あなたは実際にあなたのWordPressテーマを作成するために単一のindex.phpを使うことができます。必要なのはstyle.cssとindex.php(ウィットのフッタとヘッダに沿って)だけで、すべてテーマ開発者次第です。私は古いスタイルの古典的なブロックデザインのためにそれをたくさんしました、しかし今日、複雑なCMSと雑誌のテーマをデザインしている間。 WordPressテンプレート階層 に従って異なるファイルを使用すると、作業がずっと簡単になります。

PHP関数には慣れていないがCSS/XHTMLが得意な初心者にとっては、カスタマイズはずっと簡単になります。

2
Mehmet