カスタム投稿タイプテンプレート
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():投稿タイプのアーカイブのタイトルを表示、または取得します。