WPで抜粋表示がうまいこといかない場合にチェックする点

indexのページで本文が全部出ている場合は以下の項目をチェックしてみよう

この世にはthe_content(the_excerpt()の2つの関数が存在する
この2大原則を胸に刻んでおけば大抵のことはどうにでもなる。

the_content()

こっちを使う場合もあるけど、基本的にはこっちは本文すべて出したい単一ページ(single.phpなど)で使う。
しかし、単一ページ以外の場合、本文中に「more」があったらアーカイブページでは「more」より上を抜粋として表示してくれる親切な一面もある。
excerptで表示する概要の文字数を変更する処理をfunctions.phpに書く事は可能だけど(参考:https://codex.wordpress.org/Function_Reference/get_the_excerpt)、一括で行われる操作のため
「抜粋わざわざ記入するのめんどいし本文冒頭と同じでいいんだけど、記事ごとに抜粋として取り扱われる箇所を変更したいなぁ」
という場合は、エディタの「more」を使い、どこまでを表示するか明示的にするのがよいでしょう。

the_excerpt()

基本的にこっちを使っておけば間違いない。
抜粋欄に記入があれば、そちらを抜粋として表示してくれる。
本文冒頭55単語までを抜粋として表示し、それ以降を[]で表示して「続きを読む」リンクをつけてくれる。
しかし、日本語など半角SPで区切らない言語はうまく55単語を抜粋できない場合がある。
その場合はデフォルトでついてくるプラグイン「WP Multibyte Patch」をオンにすると、日本語の場合は110文字まで表示してくれるようになる。

the_excerpt()を使っているのに全文出てしまう

content.phpあたりをチェックしてみる。
たとえばデフォルトのテーマに含まれているTwenty Fourteenのcontent.phpはこうなっている

<?php if ( is_search() ) : ?>
	<div class="entry-summary">
		<?php the_excerpt(); ?>
	</div><!-- .entry-summary -->
<?php else : ?>
	<div class="entry-content">
...

検索結果の場合は抜粋、それ以外は全部出そうという方針で作られている。
一覧の時は出したいなぁと思ったら、is_archive()も含むなどしてみよう。

おまけ:抜粋があったら抜粋出したいけど、それ以外は全文出したい。

if (has_excerpt() ) :
	the_excerpt();
else :
	the_content();
endif;

Profile picture

ぴーやま
プログラミングを嗜んでします。中華料理で出てくるたまごふわふわのコーンスープが好きです。