WordPress トップページなど一覧ページの記事を省略する方法。個別には でできるも、テンプレートタグ ( the_excerpt ) を利用して自動化。

久々に WordPress を新規インストール。今回のケースは一件一件の記事が長文になる為、トップページなどの一覧表示されるページでは省略して表示したい。デフォルトのテンプレート「Twenty Twelve」をしばらく使っていたのだが、テーマによって若干の違いもあるが、大凡流用できるのでメモ。

個別の記事内で投稿時に省略したい箇所に <!–more–> と入力するとその箇所から省略されるのだが、一件一件入れる必要があるので、すでに投稿している記事に適用するには全て編集する必要がある。またその逆の作業もある可能性もあるのでこの方法は却下。

あくまでも何文字まできたら [more…] ってヤツが理想。調べてみると即発見。テンプレートタグ ( the_excerpt ) を利用して自動化可能との事。まず下準備として、デフォルトでインストールされているプラグイン「WP Multibyte Patch」を有効化にしておく。

1.テーマ内のテンプレートを加工。
「wp-content」 → 「themes」 → 使っているテーマ内の本文を表示している箇所を探す。
「content.php」が一般的なようだが私が利用しているテーマの場合は該当するファイルが無い。「index.php」で制御している模様。

以下タグが一般的なようだが、こちらも発見できず。
[php]
<?php the_content; ?>
[/php]

この「the_content」を「the_excerpt」に変更すると。

私の場合は「the_content」が無かったので、本文を表示させるソースを削除、変わりに以下を記述。
[php]
<?php the_excerpt(__(‘more’)); ?>
[/php]
まずはコレで省略できる。はず。

2.省略する文字数の設定
この設定を制御しているのは初めに設定した「WP Multibyte Patch」なので、こちらのデータを修正。
該当ファイルは、「wp-content」 → 「plugins」 → 「wp-multibyte-patch」 → 「wp-multibyte-patch.php」内、32行目付近の以下コードを修正。
[php]
‘excerpt_mblength’ => 110,
[/php]
「110」がデフォルトの文字数なので、これを任意の数字に変更。

3.省略された記事[…]をリンクに変更
デフォルトで省略すると […] との表示になりリンクはナシ。一般的なイメージだと「続きはこちら…」みたいなテキストにリンクが張ってあるのが理想。これは各テーマ、ディレクトリ内「functions.php」に以下コードを追加で実現可能。

function new_excerpt_more($post) {
    return '' . '...続きを読む' . '';    
}    
add_filter('excerpt_more', 'new_excerpt_more');

「続きを読む」の箇所で表示する文言を設定可能。

以上投稿記事の省略方法メモ。