サイト編集テンプレート
Topics
テンプレートとテンプレートパーツのフロー
このドキュメントでは、テンプレートやテンプレートパーツがフロントエンドでどのようにレンダーされ、バックエンドでどのように編集されるかの内部構造を説明します。
ストレージ
ブロックテンプレートは、通常のテンプレートと同様にテーマフォルダ内にファイルとして保存されています。大きな違いは、ユーザーがサイトエディター UI でプロックテンプレートを編集できる点です。
ユーザーがテンプレートやテンプレートパーツを編集すると、最初のテーマテンプレートファイルはそのまま維持されますが、テンプレートのフォークしたバージョンが wp_template
カスタム投稿タイプ、テンプレートパーツの場合は wp_template_part
に保存されます。
この機能により、サイトのフロントエンドのレンダーではいかなる時点でも、テーマからのテンプレートファイルと、編集したテンプレートであるカスタム投稿タイプのテンプレートが混在して使用されます。
同期
2つの異なる場所からのテンプレートの編集とレンダーのアルゴリズムを単純化するため、「テンプレートの同期」操作が行われます。
同期は wp_template
および wp_template_part
カスタムテンプレート内のテーマテンプレートを auto-draft
ステータスで複製することで行われます。ユーザーがこのテンプレートを編集すると、ステータスは publish
に更新されます。
したがって、
- テンプレートのレンダリングや取得は、カスタム投稿タイプのテンプレートのみを考慮すれば十分です。テーマフォルダからテンプレートファイルを直接取得する必要はありません。同期により、これらのファイルはカスタム投稿タイプに複製されます。
- 変更されていないテーマテンプレートは、
auto-draft
ステータスです。 - 編集されたテーマテンプレートは、
publish
ステータスです。
同期は、2つの異なるフローで重要です。
- テンプレートやテンプレートパーツを編集する際、サイトエディタのフロントエンドはREST API を使用して編集済みテンプレートや利用可能なテンプレートを取得します。したがって、
wp-templates
とwp-template-parts
エンドポイントに対して実行されるすべてのGET
API リクエストに対して、同期が必要です。 - テンプレートをレンダリングする際(「テンプレートの解決」とも呼ばれます)、これは、WordPressがテンプレート階層をたどって、現在読み込まれているページのレンダリングに適したテンプレートを見つけるアルゴリズムです。
- ブロックテーマをエクスポートする際、ブロックテーマのすべてのテンプレートをファイルとしてエクスポートする必要があります。操作を単純化し、カスタム投稿タイプテンプレートのみのエクスポートのため同期が必要です。
テーマの切り換え
ブロックテーマでは、相互に参照可能なテンプレートや、カスタム投稿タイプに保存可能なテンプレートを利用しているため、異なるテーマのテンプレートやテンプレートパーツを混在できます。例えば、
- テーマ A の「ヘッダー」テンプレートパーツが良いので、テーマ B で使用する。
- テーマ A の「連絡先」テンプレートが良いので、テーマ B で使用する。
このフローを実現するには、よく考えられた UI と経験が必要です。現段階のフルサイト編集では、この可能性を禁止し、テンプレートとテンプレートパーツをテーマ別にすることから始めています。
しかし、テンプレートやテンプレートパーツが元々どこから来たのか、どのテーマが基になっているかを残すことは重要です。このため、各テンプレートやテンプレートパーツのカスタム投稿タイプエントリのテーマ識別子を含む、 theme
投稿メタを保存しています。
将来的には、異なる theme
投稿メタ値を持つテンプレートやテンプレートパーツの混在を検討することになると思います。
最終更新日: