通常、WordPressで記事を投稿した際、投稿一覧ページには全文が表示されるようになっています。記事の内容によってはすごく長い記事になることもあり、一覧ページがすごく長くなってしまいます。そこで、記事全文から一部分を抜粋して表示させ、一覧ページをコンパクトにまとめる方法を紹介します。

投稿画面で < !-more->タグを使う

「<!-more->」タグを使うことで投稿画面の中で自分の好きなところに挿入して、自由に文章を抜粋させることができます。ただこれは記事を投稿する度にタグを挿入しなければならないので、うっかり挿入し忘れてしまったり、正直、面倒くさかったりもします。
そこで、次は投稿する度に自動で文章を抜粋させる方法です。

the_excerpt()を利用する

「the_excerpt()」は、WordPressのテンプレートタグで、指定した文字数のところで文章を抜粋するタグです。これを使用するには、まずWordPressの日本語版にある「WP Multibyte Patch」というプラグインを有効化にします。それによって、「the_excerpt()」が正常に動作するようになります。
実際に表示させるには、index.phpに記述されている以下の部分を書き換えます。

変更前

<?php the_content(); ?>

変更後

<?php the_excerpt(); ?>

これで、文章を抜粋して表示させることができます。デフォルトでは110文字で抜粋され、末尾は[…]が出力されます。
抜粋される文章を自分で作成して表示させたい場合は、投稿画面に抜粋欄があるので、そこに好きな文章を入れて表示させることもできます。抜粋欄が見当たらない場合は、画面上にある「表示オプション」をクリックすれば、抜粋のチェックボックスがあるので、そこにチェックを入れると使えるようになります。

the_excerpt()をカスタマイズしてみる

デフォルトのまま、「the_excerpt()」を使用するのも良いですが、少しカスタマイズさせてみるのも良いかもしれません。

抜粋する文字数を変更する

特に何もしなければ、110文字で抜粋されるようになっているので、この文字数を変更してみたいと思います。変更するには、function.phpに以下を追加します。

function new_excerpt_mblength($length) {
  return 50;
}
add_filter('excerpt_mblength', 'new_excerpt_mblength');

これで、50文字で抜粋するように変更ができます。

末尾の表示を変更する

抜粋される文章の末尾は[…]がデフォルトで表示されます。この表示も変更することができます。変更するには、function.phpに以下を追加します。

function new_excerpt_more($more) {
  return '[...]';
}
add_filter('excerpt_more', 'new_excerpt_more');

[…]の箇所を「続きをを読む→」など好きな文言に差し替えれば、変更した文言が表示されるようになります。また、「続きをを読む→」といった文言にリンクを張りたいというときは、以下のように記述すれば、記事ページに飛ばすこともできます。

function new_excerpt_more($post) {
  return '<a href="'. get_permalink($post->ID) . '">' . '続きを読む→' . '</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

これでリンクをつけることができるようになりました。
これらの指定は、function.phpをいじらなくても直接テンプレートファイルに記述しても大丈夫です。その場合は、以下のように記述します。ここでは、index.phpにある「the_content()」を変更します。

<?php echo mb_substr(get_the_excerpt(), 0, 50); ?>
  <a href="<?php the_permalink(); ?>">続きを読む→</a>

これでfunction.phpをいじらないで、文章を抜粋させることができるようになります。管理しやすいように自分の好みの方法でカスタマイズすれば良いと思います。

おすすめの記事