カスタム投稿タイプ – テンプレート階層
WordPressはテンプレート階層を通じて動作し、最初に見つけたテンプレートファイルを使用します。したがって、acme_product
カスタム投稿タイプのカスタムテンプレートを作成したい場合は、single.php
ファイルをコピーし、single-acme_product.php
として保存して編集することから始めるのが良いでしょう。
ただし、カスタムテンプレートファイルを作成したくない場合、WordPressはテーマに既に存在するファイルを使用します。これにはarchive.php
、single.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
が使用されます。
関数リファレンス
- register_post_type() : 投稿タイプを登録します。
- is_post_type_archive() : 既存の投稿タイプアーカイブページのクエリを確認します。
- post_type_archive_title() : 投稿タイプアーカイブのタイトルを表示または取得します。