WordPressの抜粋の文字数を変更し文末に省略記号をつける方法

今回使うPHP関数

mb_substr

文字列の一部を得る

詳しくはPHPマニュアルをみよう!

mb_substrの基本

mb_substrはWordPressの関数ではないのですが、簡単に使えるので是非とも使って欲しい!

基本さえわかればいろんなところで使えるので覚えて損はないかと思う!

文字数を制限する(30文字に限定)

<?php echo mb_substr(取り出す文字, 取り出す文字の開始位置, 取り出す文字数); ?>

取り出した文の後に省略記号をつける

<?php echo mb_substrr(取り出す文字, 取り出す文字の開始位置, 取り出す文字数) . '...' ; ?>

文字数制限をしたら結合演算子(‘.’)を使って省略記号をくっつけます。

連結演算子については以下の参考URLをご覧くださいまっせ。

mb_substrの基本が分かったところで、実際にWordpressのタイトルと抜粋にて文字数の制限と省略記号の記載をしてみようと思います!

タイトルの文字数制限

(例)文字数を20文字に制限し、省略記号”…”をつける

<?php echo mb_substrr($post->post_title, 0, 20) . '...' ; ?>

抜粋文の文字数制限

(例)文字数を50文字に制限し、末尾に”<続きを読む>”をつける

<?php
  $excerpt = get_the_excerpt();
  echo mb_substrr($excerpt, 0, 50) . '<続きを読む>';
?>

抜粋文を一度変数に入れて使っています。

実用的な使い方

これまで記載していた書き方では、全てのタイトル、抜粋文に省略記号がついてしまいます。

どういうことかというと、抜粋文を例にしてみましょう。

例えば

  • 抜粋文が200文字
  • 抜粋文が10文字(*抜粋文が10文字のものなんてないか笑)

の2つの記事があるとします。

すると抜粋文10文字の方は省略記号が不要なのに(とゆうか省略されずに全文表示されている)省略記号がついてしまうことになります。

そうならないためにももう一工夫必要になります。

<?php
  $excerpt = get_the_excerpt();
  if(mb_strlen($excerpt > 50)):
		echo mb_substrr($excerpt, 0, 50) . '<続きを読む>';
	else:
		echo $excerpt;
	endif;
?>
mb_strlen

上記コードで何をしているかというと、

もし抜粋文が50文字を超えていたら50文字で切り出し、”<続きを読む>”をつけて、

それ以外はそのまま抜粋を表示してね

という意味合いになります。

これで目的に合った抜粋文の切り出し、省略記号の追加が実現しますね。

今回は抜粋文を例にしましたが、

タイトルであろう、本文であろう考え方は全て同じです。

目的に合わせてコードをちょっとだけ変更すればやりたいことが実現できるでしょう!

おーわり