投稿テンプレート
TOPICS
翻訳元記事はこちらです。
WordPressが投稿タイプを表示するために使用するテンプレートファイルはたくさんあります。ブログやその記事を扱うコンテンツはすべて投稿タイプの中にあります。
Index.php
index.php
は、他のテンプレートファイルが存在しない場合、投稿タイプを表示します。多くの場所で述べられているように、すべてのテーマは有効なindex.php
ファイルを持っていなければなりません。
多くの基本的なテーマでは、投稿タイプを表示するためにindex.php
を使用するだけでなんとかなりますが、上記の使用例では他のテンプレートファイルを作成することを推奨します。
表示されている内容に応じて、独自のコンテンツ構造やレイアウトが必要になることがよくあります。
サイト内のコンテキストに基づいて、コンテンツ構造をカスタマイズするために使用できるテンプレートがたくさんあります。
最も注目すべき投稿テンプレートファイルは home.php
と single.php
で、それぞれ投稿の一覧と個別投稿を表示します。
Home.php
静的なフロントページが使用され、サイトにブログ一覧用のページが定義されている場合、 home.php
ファイルが指定されたブログ一覧ページに使用されます。
カスタムページテンプレート上でのブログページネーションは正しく動作しないため、カスタムページテンプレートを作成するよりも、このテンプレートの使用をお勧めします。
テーマにhome.php
がない場合、index.php
が代わりに使用されます。
Single.php
テンプレート構造はできるだけシンプルに構築し、本当に必要性がない限りテンプレートを増やさないようにするのが賢明です。
そのため、ほとんどのテーマ開発者はsingle.php
で十分なので、single-post.php
ファイルを作成しません。
ほとんどの場合、すべてのテーマにはsingle.php
があるはずです。以下はテーマTwenty Fifteenのsingle.php
ファイルの例です。
<?php
/**
* The template for displaying all single posts and attachments
*
* @package WordPress
* @subpackage Twenty_Fifteen
* @since Twenty Fifteen 1.0
*/
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
// Start the loop.
while ( have_posts() ) : the_post();
/*
* Include the post format-specific template for the content. If you want to
* use this in a child theme, then include a file called called content-___.php
* (where ___ is the post format) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) :
comments_template();
endif;
// Previous/next post navigation.
the_post_navigation( array(
'next_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Next', 'twentyfifteen' ) . '</span> ' .
'<span class="screen-reader-text">' . __( 'Next post:', 'twentyfifteen' ) . '</span> ' .
'<span class="post-title">%title</span>',
'prev_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Previous', 'twentyfifteen' ) . '</span> ' .
'<span class="screen-reader-text">' . __( 'Previous post:', 'twentyfifteen' ) . '</span> ' .
'<span class="post-title">%title</span>',
) );
// End the loop.
endwhile;
?>
</main><!-- .site-main -->
</div><!-- .content-area -->
<?php get_footer(); ?>
上のコード例では、ヘッダーをget_header()
で読み込んだあとに、2つのhtmlタグがあることがわかります。
次にループが始まり、テンプレートタグ get_template_part( 'content', get_post_format());
が適切なコンテンツを get_post_format()
で投稿タイプを決定して取り込みます。
次に、コメントをテンプレートタグ comments_template()
で取り込みます。次に、ページネーションが表示されます。
最後に、コンテンツのdivを閉じて、get_footer()
でフッターを読み込みます。
Singular.php
WordPressバージョン4.3では、投稿用のsingle.php
、ページ用のpage.php
、それぞれのバリエーションの後の階層にsingular.php
が追加されました。このテンプレートは is_singular()
のルールに従っており、投稿の種類に関係なく単一の投稿に使用されます。
これらのファイルの両方に同じコードを使用していた(または、どちらか一方のファイルに同じコードを含んでいた)テーマは、1つのテンプレートに簡素化することができるようになりました。
Archive.php
開発者がテンプレートにパーマリンク付きのメタデータを入れない限り、archive.php
は使われません。
メタデータとは、投稿に関連付けられた情報のことです。例えば、何かが投稿された日付、作者、投稿に使用されたカテゴリー、タグ、タクソノミーなどがメタデータの例です。
ウェブサイトへの訪問者がメタデータをクリックすると、archive.php
はそのメタデータに関連付けられた投稿をレンダリングします。
例えば、訪問者が著者名をクリックすると、archive.php
はその著者のすべての投稿を表示します。
一般的に、archive.php
によって表示されるページのタイトルは、ユーザーがクリックしたメタデータの名前になります。そのため、ユーザーが著者名をクリックした場合、他のすべての著者の投稿を表示するページ名は著者名となり、メタデータに関する追加の説明が表示されることがよくあります。
以下はTwenty Fifteenのachive.php
のコード例です。
このスニペットは、archive.php
ファイルをhome.php
やindex.php
ファイルとは異なるものにする唯一のコードです。
<header class="page-header">
<?php
the_archive_title( '
<h1 class="page-title">', '</h1>
' );
the_archive_description( '
<div class="taxonomy-description">', '</div>
' );
?>
</header>
<!-- .page-header -->
Author.php と Date.php
Author.phpとdate.phpは、特定のアーカイブタイプのファイルです。再確認が必要な場合は、これらがテンプレート階層の中でどのような位置にあるかを確認してください。
一般的に、ほとんどのテーマではarchive.php
で十分なので、これらのテンプレートを作成する必要はありません。
Author.php
あなたが複数の著者のために設計されたテーマを構築している場合は、author.php
テンプレートを構築することは理にかなっているかもしれません。author.php
テンプレートでは、著者に関するより多くの情報を提供することができ、その著者のアバター、ソーシャルメディアサイト、そしてその著者によって書かれたすべての投稿を表示することができます。
これは、archive.php
ファイルだけに頼るのではなく、ステップアップすることになります。
さらに、著者IDやニックネームを使用して、個々の著者のための特定の author.php
ファイルを構築することができます。例えば、John Doeが多くのゲスト著者を持つ、サイトのトップの著者であるとします。
すべてのゲスト著者の情報を author.php
で表示したいかもしれませんが、John Doe の著者 ID が 3 の場合は author-johndoe.php
または author-3.php
を作成して、John Doe のためのより多くの情報を含む特定の著者ページを作成することができます。
Date.php
同様に、あなたが雑誌やニュースサイトに向けたテーマを構築している場合は、これらのウェブサイトは頻繁に日付や号によって記事や投稿を整理するように、date.php
ファイルを構築することは理にかなっているかもしれません。
あなたが十分な理由を見つけた場合、さらにday.php
、month.php
、またはyear.php
を構築することができます。
Category.php, Tag.php, Taxonomy.php
カテゴリー、タグ、タクソノミーが何であるかを再確認したい場合は、こちらのページをご覧ください。
多くの場合、これらのテンプレートファイルを構築する必要はありません。しかし、フードブロガーのためのテーマを構築する例では、これらの特定のテンプレートを構築するためのいくつかの使用例があります。
フードブロガーのウェブサイトでは、カテゴリーは、レストラン、美しい食べ物、エスニック料理、レシピである可能性があります。
あなたのブログ記事のほとんどは、レシピとして分類されているブログを除いて、同じように表示したい思うかもしれません。
そのため、category-recipe.php
ファイルを作成して、レシピに関する重要な詳細が表示されているグリッドビューにレシピブログの記事を表示させたい場合があります。
さらに、おそらくチョコレートはあなたが構築しようとしているテーマにとって重要なタグである場合、チョコレートに特化したバナー画像を表示できるように、tag-chocolate.php
ファイルを作成することは理にかなっているかもしれません。
Search.php
ほとんどのテーマはsearch.php
ファイルを持っているので、ユーザーは自分のクエリが通過したことを明確に知ることができます。このスニペットのように、クエリの結果を識別する何らかのヘッダーを持つのが一般的です。
<header class="page-header">
<h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentyfifteen' ), get_search_query() ); ?></h1>
</header>
<!-- .page-header -->
このコードスニペットは、get_search_query()
で検索されたクエリを取得します。ユーザーは記事やページが検索に適しているかどうかを判断しようとしているので、 search.php
は完全な内容ではなく抜粋文のみを取得することがよくあります。