投稿テンプレート

2020.04.02 2020.04.02

TOPICS

翻訳元記事はこちらです。

WordPressが投稿タイプを表示するために使用するテンプレートファイルはたくさんあります。ブログやその記事を扱うコンテンツはすべて投稿タイプの中にあります。

Index.php

index.phpは、他のテンプレートファイルが存在しない場合、投稿タイプを表示します。多くの場所で述べられているように、すべてのテーマは有効なindex.phpファイルを持っていなければなりません。
多くの基本的なテーマでは、投稿タイプを表示するためにindex.phpを使用するだけでなんとかなりますが、上記の使用例では他のテンプレートファイルを作成することを推奨します。

表示されている内容に応じて、独自のコンテンツ構造やレイアウトが必要になることがよくあります。
サイト内のコンテキストに基づいて、コンテンツ構造をカスタマイズするために使用できるテンプレートがたくさんあります。
最も注目すべき投稿テンプレートファイルは home.phpsingle.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.phpindex.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.phpmonth.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 は完全な内容ではなく抜粋文のみを取得することがよくあります。