カスタム投稿タイプ – テンプレート階層

WordPressはテンプレート階層を通じて動作し、最初に見つけたテンプレートファイルを使用します。したがって、acme_productカスタム投稿タイプのカスタムテンプレートを作成したい場合は、single.phpファイルをコピーし、single-acme_product.phpとして保存して編集することから始めるのが良いでしょう。

ただし、カスタムテンプレートファイルを作成したくない場合、WordPressはテーマに既に存在するファイルを使用します。これにはarchive.phpsingle.php、およびindex.phpファイルが含まれます。

シングル投稿とそのアーカイブは、それぞれsingle.phpおよびarchive.phpテンプレートファイルを使用して表示できます。

  • カスタム投稿タイプのシングル投稿はsingle-{post_type}.phpを使用します。
  • そのアーカイブはarchive-{post_type}.phpを使用します。
  • この投稿タイプのアーカイブページがない場合は、BLOG_URL?post_type={post_type}を渡すことができます。

ここで、{post_type}register_post_type()関数の$post_type引数です。

したがって、上記の例では、シングル製品投稿とそのアーカイブ用にsingle-acme_product.phpおよびarchive-acme_product.phpテンプレートファイルを作成できます。

また、任意のテンプレートファイルでis_post_type_archive()関数を使用して、クエリが特定の投稿タイプのアーカイブページを表示しているかどうかを確認し、post_type_archive_title()を使用して投稿タイプのタイトルを表示できます。

カスタム投稿タイプテンプレート

  • single-{post-type}.php
    訪問者がカスタム投稿タイプからシングル投稿を要求したときに使用されるシングル投稿テンプレート。たとえば、single-acme_product.phpは、acme_productという名前のカスタム投稿タイプからシングル投稿を表示するために使用されます。
  • archive-{post-type}.php
    訪問者がカスタム投稿タイプのアーカイブを要求したときに使用されるアーカイブ投稿タイプテンプレート。たとえば、archive-acme_product.phpは、acme_productという名前のカスタム投稿タイプからの投稿のアーカイブを表示するために使用されます。archive.phpテンプレートファイルは、archive-{post-type}.phpが存在しない場合に使用されます。
  • index.php
    カスタム投稿タイプの特定のクエリテンプレート(single-{post-type}.php, single.php, archive-{post-type}.php, archive.php, search.php)が存在しない場合にindex.phpが使用されます。

関数リファレンス