WordPressテーマTwenty~のカテゴリページ等を抜粋一覧等にする方法

WPアーカイブページの記事を抜粋一覧にする設定方法まとめ

TwentyではじまるWordPressのデフォルトテーマでは、投稿記事にmoreタグを入れ忘れると、ブログのページも、アーカイブページも、投稿一覧が全文表示になってしまいます。

WordPressをブログサイトとして使用している場合、トップページがブログの抜粋一覧でなく、全文表示になっていると、

ユーザーさんがトップページを閲覧した時に最新投稿だけしか見せられず、せっかくたくさんの良い記事を書いていたとしても、サイドバーからしかアピールできず、回遊率に影響が出ます。

モバイルの場合は、もっと問題ですね。

また、WordPressでは、投稿記事が自動的に分類され、アーカイブページ(:カテゴリーページ、タグページ、月別などの時系列のページなど)が自動的に作成される機能がついています。

この機能は、検索ユーザーさんにとっては、カテゴリーやタグ別に記事を分類して、関連記事を見る手助けとなり、運営側からすれば、サイトの回遊率を上げる一助になるというメリットがあります。

しかし、せっかくユーザーさんがカテゴリーページ等を開いて見ようとしてくれた時に、全文表示になってしまっていては、俯瞰で投稿記事を一覧で見せることができないので、アーカイブページの役割を存分に発揮できません。

moreタグを入れ忘れなければ良いのですが、やはり自動的に抜粋のみを表示できるようにした方が運営上楽ですよね。

そこで、Twentyからはじまるテーマのブログページとアーカイブページを記事抜粋一覧にする設定方法をまとめてみました。

こんな感じになります↓
全文表示→抜粋表示例・ブログページ

※こういったカスタマイズは、子テーマで行うことをおすすめします。
参考:子テーマの作成:http://hublog.biz/bwpb/child-theme/

Twenty Twelve~Fourteen と、 Fifteen、Sixteenは少々設定方法が違いますので、Fifteen、Sixteenの方は「Twenty Fifteenの設定方法」へジャンプして下さい。

Twenty Twelve~Twenty Fourteenの設定方法

子テーマにcontent.phpをコピーし、そのcontent.phpを開いて以下の記述を探して下さい。
※画像はTwenty Thirteenのcontent.phpですが、Twenty Twelve、Twenty Thirteen、Twenty Fourteenのcontent.phpは全て同じ記述になっています。

2013content.php

この記述は、
content-php内の記述の詳解
という感じですので、この記述を検索の時だけでなく、ホームや、カテゴリーページなどの抜粋表示にしたいページを、この if 以下に追加すればいいわけです。

ですので、条件を指定している記述、

<?php if ( is_search() ) : // Only display Excerpts for Search ?>

<?php if ( is_search() || is_home() || is_archive() ) : ?>

とすることで、

  • is_home()  でブログのページを
  • is_archive() でアーカイブページが作成される、カテゴリー、タグ、著者、日付のページを一括で

抜粋一覧にすることができます。

または、

<?php if ( is_search() || is_home() || is_category() || is_tag() || is_author() || is_date() ) : ?>

と編集すると、それぞれ

  • is_home()  →  ブログページ
  • is_category()  →  カテゴリーページ
  • is_tag () →  タグページ
  • is_author()  →  著者ページ
  • is_date()  →  日付に関するページ(日、月、年別アーカイブ)

を抜粋一覧にすることができます。

抜粋一覧にしたくなるようなデフォルトで存在するページは網羅していますが、抜粋一覧にしなくても良いと思われるものがある場合は、こちらの個別指定の中から除けていただければ、と思います。

カスタム投稿タイプを含めたい場合は、

is_post_type_archive()

を使用します。

詳しい使い方については以下のページを参照して下さい。

関数リファレンス/is post type archive
http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/is_post_type_archive

Twenty Fifteenの設定方法

アーカイブページの設定方法

Twenty Fifteenの場合、category.phpなどが存在せず、archive.phpがカテゴリーページや、タグページ等の自動生成に使われています。

ですので、archive.phpをカスタマイズします。

子テーマにarchive.phpをコピーし、そのarchive.phpを開いて以下のループ内の記述を探して下さい。

2015archive.phpループ

get_template_part( 'content', get_post_format() );

この記述は、content.phpテンプレートの投稿フォーマットをを呼び出している記述です。

これを以下のように変更します。

get_template_part( 'content-search', get_post_format() );

この content の部分を content-search と変更すると、content.php ではなく、content-search.php の投稿フォーマットを呼び出す設定になります。

content-search.php はサイト内検索の結果表示用で、表示される投稿一覧は抜粋(excerpt)表示になっています。

ですので、ココを content-search.php を呼び出す設定に変更するだけでarchive.phpから生成されるカテゴリーや、タグ、月別、著者ページに表示される投稿一覧は全て抜粋表示にすることができます。

ブログページの設定方法

同様にブログのページ(インデックスページ)も抜粋一覧表示にできます。

ブログのページがトップページの場合も、固定ページをトップページにしている場合のブログのページも含みます。

まず、メインインデックスのテンプレート (index.php)を子テーマにコピーし、そのテンプレートを開きます。
2015index.phpループ

同様に content → content-search と変更すると、

get_template_part( 'content-search', get_post_format() );

以下のような表示にすることができます。
2015トップページの抜粋表示例

Twenty Sixteenの設定方法

Twenty Sixteenの場合も、Fifteenと同様アーカイブページがひとつです。
ですので、こちらもarchive.phpをカスタマイズします。

子テーマにarchive.phpをコピーし、そのarchive.phpを開いて以下のループ内の記述を探して下さい。
TwentySixteenのarchive.php

get_template_part( 'template-parts/content', get_post_format() );

この記述は、template-partsディレクトリ内のcontent.phpテンプレートの投稿フォーマットをを呼び出している記述です。

今回は大丈夫ですが、子テーマに親テーマからテンプレートをコピーする時は、他の部分に影響する場合がありますし、

親テーマとディレクトリ構造を変えてしまうと、自分ひとりしか見ない場合でも後で見返した時に混乱する場合もありますので、ディレクトリ構造もキープする方が無難です。

ですので、子テーマにcontent.phpテンプレートをコピーする場合は、

  1. 子テーマ内にもまずtemplate-partsディレクトリ(フォルダー)を作成しておき、
  2. その中にcontent.phpテンプレートをコピーします。

これを以下のように変更します。

get_template_part( 'template-parts/content-search', get_post_format() );

この content の部分を content-search と変更すると、content.php ではなく、content-search.php の投稿フォーマットを呼び出す設定になります。

Fifteen同様、Sixteenでも、content-search.php はサイト内検索の結果表示用で、表示される投稿一覧は抜粋(excerpt)表示になっています。

ですので、同様に、content-search.php を呼び出す設定に変更するだけでarchive.phpから生成されるカテゴリーや、タグ、月別、著者ページに表示される投稿一覧は全て抜粋表示にすることができます。

抜粋もいらない、アイキャッチ画像・タイトル・日付だけでいいという場合

更に一覧表示から抜粋も除外したい、といった場合は、content-search.php の抜粋を呼び込むWordPressタグ、excerptを削除します。

content-search.phpの中から、以下の記述を探し、削除すれば、抜粋も表示されなくなります。

<?php twentysixteen_excerpt(); ?>

実際のcontent-search.phpでの表示はこのようになっています。
TwentySixteenの抜粋WPタグ

削除すると以下のようになります。
記事一覧表示から抜粋を取り除く事は出来ましたが、マークした部分が不自然に目立ってしまいますね。
TwentySixteenエントリーフッター

この部分はcontent-search.phpの中の下の部分なので、
TwentySixteenエントリーフッタ―タグ

これを

<span class="entry-date"><?php echo get_the_date(); ?></span>

といった日付タグと置き換えれば、以下のようにできます。

フッタータグを日付タグに変更後

以上、

「WordPressテーマTwenty~のカテゴリページ等を抜粋一覧等にする方法」の巻

でした。

お役に立ちましたら、シェア、ブックマークなどしていただけるとハッピーです!

Published:2015/07/29

Written by

コメントを残す