カスタム投稿タイプテンプレート
TOPICS
翻訳元記事はこちらです。
WordPressのテーマシステムでは、カスタム投稿タイプのカスタムテンプレートに対応しています。カスタム投稿タイプに属する個別投稿表示用のカスタムテンプレートはWordPressバージョン3.0からサポートされており、アーカイブ表示用のカスタムテンプレートのサポートはバージョン3.1で追加されました。
カスタム投稿タイプ – テンプレート階層
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()
を使用して投稿タイプのタイトルを表示することもできます。
関数リファレンス
- register_post_type():カスタム投稿タイプを登録します
- is_post_type_archive():対象の投稿タイプのアーカイブページかどうかを判定します
- post_type_archive_title():投稿タイプのアーカイブのタイトルを表示、または取得します。