【WordPress】記事のタイトルや記事内容の文字制限&改行なども反映して「…」にするメモ

記事一覧表示でたまーにやる、一定以上の文字数になったら「…」ってするやつ。
タイトルや記事のさわりの部分を表示するときの文字制限、いつもどうだったっけ?ってなるのでコピペ用にメモしとく。

functions.phpにカスタム関数追加

functions.phpにカスタム関数を追加。
この関数でタイトルの文字数を制限して、必要に応じて「…」を追加する仕様。

/* title文字数制限 */
function custom_shorten_title($title, $limit = 50, $end = '…') {
  if (mb_strlen($title) > $limit) {
      return mb_substr($title, 0, $limit) . $end;
  } else {
      return $title;
  }
}

/* 記事内容の文字数制限 */
function custom_shorten_content($limit = 100, $end = '…') {
    $content = get_the_content();
    $content = strip_tags($content);
    $content = strip_shortcodes($content);
    $content = wp_trim_words($content, $limit, $end);

    return $content;
}

タイトルを文字制限する場合

<?php the_title(); ?>の部分を下のコードに書き換える。

<?php echo custom_shorten_title(get_the_title(), 40); ?>

上記は40文字で文字制限する場合のコード。
40文字以上になると「…」が付く。40文字以上表示したい場合は「40」の数値を好きな文字数に書き換える。

コンテンツ(記事内容)を文字制限する場合

<?php the_content(); ?>の部分を下のコードに書き換える。

<?php echo custom_shorten_content(100); ?>

上記は100文字で文字制限する場合のコード。
100文字以上になると「…」が付く。100文字以上表示したい場合は「100」の数値を好きな文字数に書き換える。

コンテンツ(記事内容)のタグを生かしたまま改行もできる状態で表示しつつ文字制限する場合

<?php
if ( mb_strlen( $post->post_content, 'UTF-8' ) > 150 ) {
  $content = mb_substr( strip_tags( $post->post_content, '<p><span><br>' ), 0, 150, 'UTF-8' );
  echo $content . '…';
} else {
  echo strip_tags( $post->post_content, '<p><span><br>' );
}
?>

これはfunctions.phpに記述せず。
改行もきちんと反映して記事内容を文字制限できる。
残したいタグを記述する。

参考サイト:WordPressのタイトルと本文の文字数制限

記事内容を文字制限する方法は結構見かけるけど、改行もできる記述は少ない気がする。。
参考サイトがわかりやすく参考になりました。ありがとうございます。

ABOUT US
yukipan
Web制作会社で働いてます。パンダとかリラックマとか、まあるいものが好き。好奇心旺盛で、何にでも興味をもってしまう。とりあえずやってみてから取捨選択するのがモットー。今はグリーンカレーとチャイと株式投資がブーム。