the_excerpt()で「続きを読む」のリンクを表示させる方法

the_excerpt()を使ったときに続きを読むのリンクをつけたくて探していると、Codexにそれらしい記述があるのを発見。それによると、「投稿で “read more” リンクを作成する」として

function new_excerpt_more($post) {
	return '<a href="'. get_permalink($post->ID) . '">' . 'Read the Rest...' . '</a>';	
}	
add_filter('excerpt_more', 'new_excerpt_more');

というコードが掲載してあります。functions.phpに記述してみると、確かに出力されるのですが、一部出力されない記事もあるようです。それが何か調べてみると、出力される抜粋の文字数が一定数より少ないものは「続きを読む」が出力されていない様子。恐らく「excerpt_more」は抜粋の文字菅一定数を超えたときに実行されるフィルターなんでしょうね。僕は全記事に出力したいんですよ!全記事に!

同じページに、「wp_trim_excerpt」というフィルターも載っていたのでこちらも試してみたところ、このフィルターはthe_excerpt()の実行時に常に実行されるようです。ということで、下記のようにコードを修正。

// 抜粋もしくは本文が一定の文字数を超えたときに実行される
// 文章が途中で切れてしまうものには...を表示
function inc11_excerpt_more($post) {
	return '...';	
}	
add_filter('excerpt_more', 'inc11_excerpt_more');
// the_excerpt実行時に実行される
function inc11_wp_trim_excerpt($excerpt) {
	global $post;
	return $excerpt.'<a href="'.get_permalink($post->ID).'" class="more-link">続きを読む</a>';
}
add_filter('wp_trim_excerpt', 'inc11_wp_trim_excerpt');

これで全ての記事に「続きを読む」リンクを付けることができました。

  • ブックマーク
  • Feedly

この記事を書いた人

キタジマタカシ

長崎在住、フリーランスのWordPress テーマ / プラグインデベロッパー。 多数のプロダクトをオープンソースで開発・公開しています。現在は WordPress 有料テーマ Snow Monkey を開発・販売しています。