the_excerpt() で抜粋して“続きを読む”パーマリンク付加

本文から抜粋して表示させる必要のあるアーカイブページ、カテゴリーページ、トップページ、検索結果ページ等では、the_content() や the_excerpt() のテンプレートタグが使われます。

the_content() は、本文中にクイックタグを挿入することにより、アーカイブやカテゴリーなどの一覧ページでは以前の内容とそれ以降を読むためのリンク(デフォルト値は“(more…)”を表示し、シングルページでは全文か以降を表示させます(パラメータで設定します)。

<?php the_content(); ?>

けれど、本文中にこのを挿入するのが面倒だったり、忘れてしまったり、適切な場所が分からない場合があります。
抜粋する文字数が決まっている場合(きっとそういう場合のほうが多いと思います)は、the_excerpt() を使うほうが便利です。
この the_excerpt() は本文の抜粋と、文末に[…](“続きを読む”リンクではありません)を表示するテンプレートタグです。
全文を表示するシングルページには the_content() を使い、アーカイブやカテゴリーページなどには the_excerpt() を使えば、いちいちを挿入する面倒がありません。

<?php the_excerpt(); ?>

ただ、そのままでは少々不便です。
まず、the_excerpt() は投稿作成/編集画面の抜粋欄に入力してあればそれを、入力していない場合は本文内容の最初の55単語までを表示するのですが、日本語は英語のように単語間にスペースが無いので55単語を判別できません。なので、日本語で使用するには、WordPressに標準インストールされているプラグイン「WP Multibyte Patch」と併用する必要があります。「WP Multibyte Patch」は、文頭から110文字(設定により変更可)を the_excerpt の抜粋文字数として出力してくれますので、必ず有効化してください。
それから、the_excerpt() には“続きを読む”パーマリンクがありません。
“続きを読む”パーマリンクを付加するには、functions.phpに下記コードを追加します。

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

パーマリンクが必要なく、文末の[…]もいらないという場合は、下記のようになります。同様に[…]を任意の文字列に変更することも可能ですが、パーマリンク無しでの必要性はあまり感じませんね。

function new_excerpt_more($more) {
	return '';
}
add_filter('excerpt_more', 'new_excerpt_more');
スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク