記事の抜粋にはthe_excerptという便利な関数がある。
excerptの表示を詳細設定できるAdvanced Excerptというありがたいプラグインもある。
でも以下の条件の両方を満たすことはできなかったりする。
○改行を反映させたい
○指定の文字数を越えた時だけ「…」をつけたい
できるのかもしれないけどわからなかった(;ω;)のでテンプレートに直接以下のコードを書いた。
<?php $cnt = get_the_content(); if (mb_strlen($cnt, 'UTF-8') > 200) { echo mb_substr(strip_tags($cnt, '<p>,<br>'), 0, 200). '...'; }else { echo $cnt; } ?>
○mb_strlen:文字数カウント
○strip_tags:タグを削除
○mb_substr:文字列の一部を取得
記事の本文が200文字以上なら、200文字までを表示して後ろに「…」をつける。pタグとbrタグのみ反映させる(タグもカウントされるので、divタグやaタグを反映させると途中で切れてレイアウトがえらいことになる)。
本文が200文字以内なら本文をそのまま表示する。
もちろん、これでは本文中にリンクがあった際に、記事によってリンクがあったりなかったりという事態が発生する。
なので、Advanced Excerptでa・p・brタグを有効にしておいて、以下のようにした方が良いかもしれない。
<?php $cnt = get_the_content(); if (mb_strlen($cnt, 'UTF-8') < 200) { echo $cnt. '...'; }else { echo the_excerpt(); } ?>
自分でタグを途中で切れないようにできればそれが一番良いのだけど、それもわからなかったorz だめにんげん。
それさえわかればプラグインを使う必要がなくなるので、わかり次第追記しようと思う。