サイト編集テンプレート

テンプレートとテンプレートパーツのフロー

このドキュメントでは、テンプレートやテンプレートパーツがフロントエンドでどのようにレンダーされ、バックエンドでどのように編集されるかの内部構造を説明します。

Top ↑

ストレージ

ブロックテンプレートは、通常のテンプレートと同様にテーマフォルダ内にファイルとして保存されています。大きな違いは、ユーザーがサイトエディター UI でプロックテンプレートを編集できる点です。

ユーザーがテンプレートやテンプレートパーツを編集すると、最初のテーマテンプレートファイルはそのまま維持されますが、テンプレートのフォークしたバージョンが wp_template カスタム投稿タイプ、テンプレートパーツの場合は wp_template_part に保存されます。

この機能により、サイトのフロントエンドのレンダーではいかなる時点でも、テーマからのテンプレートファイルと、編集したテンプレートであるカスタム投稿タイプのテンプレートが混在して使用されます。

Top ↑

同期

2つの異なる場所からのテンプレートの編集とレンダーのアルゴリズムを単純化するため、「テンプレートの同期」操作が行われます。

同期は wp_template および wp_template_part カスタムテンプレート内のテーマテンプレートを auto-draft ステータスで複製することで行われます。ユーザーがこのテンプレートを編集すると、ステータスは publish に更新されます。

したがって、

  • テンプレートのレンダリングや取得は、カスタム投稿タイプのテンプレートのみを考慮すれば十分です。テーマフォルダからテンプレートファイルを直接取得する必要はありません。同期により、これらのファイルはカスタム投稿タイプに複製されます。
  • 変更されていないテーマテンプレートは、auto-draft ステータスです。
  • 編集されたテーマテンプレートは、publishステータスです。

同期は、2つの異なるフローで重要です。

  • テンプレートやテンプレートパーツを編集する際、サイトエディタのフロントエンドはREST API を使用して編集済みテンプレートや利用可能なテンプレートを取得します。したがって、wp-templates と wp-template-parts エンドポイントに対して実行されるすべての GET API リクエストに対して、同期が必要です。
  • テンプレートをレンダリングする際(「テンプレートの解決」とも呼ばれます)、これは、WordPressがテンプレート階層をたどって、現在読み込まれているページのレンダリングに適したテンプレートを見つけるアルゴリズムです。
  • ブロックテーマをエクスポートする際、ブロックテーマのすべてのテンプレートをファイルとしてエクスポートする必要があります。操作を単純化し、カスタム投稿タイプテンプレートのみのエクスポートのため同期が必要です。

Top ↑

テーマの切り換え

ブロックテーマでは、相互に参照可能なテンプレートや、カスタム投稿タイプに保存可能なテンプレートを利用しているため、異なるテーマのテンプレートやテンプレートパーツを混在できます。例えば、

  • テーマ A の「ヘッダー」テンプレートパーツが良いので、テーマ B で使用する。
  • テーマ A の「連絡先」テンプレートが良いので、テーマ B で使用する。

このフローを実現するには、よく考えられた UI と経験が必要です。現段階のフルサイト編集では、この可能性を禁止し、テンプレートとテンプレートパーツをテーマ別にすることから始めています。

しかし、テンプレートやテンプレートパーツが元々どこから来たのか、どのテーマが基になっているかを残すことは重要です。このため、各テンプレートやテンプレートパーツのカスタム投稿タイプエントリのテーマ識別子を含む、 theme 投稿メタを保存しています。

将来的には、異なる theme 投稿メタ値を持つテンプレートやテンプレートパーツの混在を検討することになると思います。

原文

最終更新日: