【WordPress】the_excerpt()で表示される抜粋の文字数制限の変更方法【functions.php】

WordPress抜粋の文字数制限変更

お知らせ一覧ページなどのアーカイブページで、WordPress関数「the_excerpt()」により表示される抜粋文の文字数制限を変更する方法を3つ紹介します。

目次

抜粋文のデフォルトの文字数制限について

WordPress関数「the_excerpt()」で表示される文字数にはデフォルトで制限がかかっています。

デフォルトの文字数制限

日本語の場合、「the_excerpt()」で表示される文字数は110文字です。

これ以上の長さの抜粋文は[…]で省略されます。

事前準備:プラグイン:「WP Multibyte Patch」をインストール

抜粋の文字数を変更する場合には、WordPressプラグインの「WP Multibyte Patch」をインストールしておいて下さい。

このプラグインがないと文字数が正しく表示されない場合があります。

方法1:functoins.phpに一筆書く

この方法にはいくつかありますが、簡単な方法はfunctions.phpに一筆書くものです。

文字数制限のためにfunctions.phpに書くコードは下記のとおりです。

/*----------------------------------------------------------*/
/* 投稿の抜粋文の文字数制限 */
/*----------------------------------------------------------*/
add_filter( 'excerpt_length', function( $length ){
  return 70; //returnの後ろに最大表示文字数を書く。この場合は70文字
}, 999 );

例えば、上のコードでは抜粋表示は最大70文字で、それ以上の長さになると[…]で省略されます。

抜粋が文字数制限以上にある場合の省略表記変更

抜粋文が上で設定した文字数以上ある場合には、デフォルト設定では文末が[…]のように表示されます。

これを … に変更したい場合には下記のようにfunctions.phpに記述します。

// 省略記号を「…」に変更する
add_filter( 'excerpt_more', function( $more ){
  return '…';
}, 999 );

方法2:WordPress関数で文字数制限する

下のWordPress関数「wp_trim_words()」を使うと、抜粋やタイトル、あるいはコンテンツ本文の文字数を制限することができます。

<?php echo wp_trim_words( get_the_excerpt(), 60, '...' ); ?>
コード解説
  • 第1引数:get_the_excerpt()、get_the_title()、get_the_contentなどのテキストを読み込むWordPress関数
  • 第2引数:制限したい文字数/上の例では60文字まで表示
  • 第3引数:文末の表示方法/上の例では「」と表示される。ちなみにデフォルト設定では「[…]

エスケープ処理する場合

必要なのか微妙なところですが、エスケープ処理する場合には下記のようになります。

<?php echo esc_html(wp_trim_words( get_the_excerpt(), 63, '...' )); ?>

方法3:PHPで文字数制限する

この場合にはfunctions.phpへの記述は必要ありません抜粋を表示させる部分に直接書きます。(ほとんどの場合はアーカイブページ等のループの中だと思います)

先にコードを書いておきます。

<?php 
$post_cont = strip_tags(get_the_excerpt());
$excerpt_cont = str_replace(array("\n", "\r\n"), '', $post_cont);
$text_limit = '50'; //表示させる文字数の制限
                    
// 制限した文字数より読み込むテキスト量が多い時は、文末は「...」で省略
if(mb_strlen($post_cont) > $text_limit) {
  $excerpt_cont= mb_substr($post_cont, 0, $text_limit);
  echo $excerpt_cont. '...';
} else {
  echo $post_cont;
}
?>

補足すると、2行目の「get_the_excerpt()」の部分は、抜粋以外にコンテンツやタイトル等のテキストにも使えます。

この方法であれば、「投稿ページ」と「カスタム投稿タイプ」の各アーカイブページで別々に抜粋の文字数制限が可能となります。

コード解説
  • strip_tags():文字列から HTML および PHP タグを取り除く
  • str_replace():文字列を置換|上では改行を無効化して表示
  • mb_strlen():文字列の長さを取得|変数$text_limitを超える場合に条件分岐

ここでは自分の忘備録として簡潔にまとめましたが、参考にしたブログでは非常に丁寧に解説されています。リスペクトしてリンクを貼らせて頂きます。深く理解したい方は是非参照なさって下さい。

KoMariCote
WordPressで表示させる文字数を制限する | KoMariCote WordPressで表示する文字数を制限するための方法をいくつかご紹介します。うまく表示させられる方法を見つけてみてください。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

■清水WEB制作代表
■コーディング:WordPress(オリジナルテーマ制作等)・HTML・Sass・FLOCSS・JavaScript(jQuery)等
■集客力:YouTube/Instagram/ブログでそれぞれ登録者数16000人/フォロワー13000人/月間最大アクセス50000PVの集客実績があります
■文章作成:博士号所有、会社員時代は科学雑誌に寄稿していたので文章作成も得意です
■写真技術:Amazon Kindle出版で、写真集・撮影編集解説書を5冊好評発売中です

目次