Webテクニック

WEB TIPS

WordPressのタイトルと本文の文字数制限

WordPressのタイトルと本文の文字数制限

WordPressで記事を読み込む時、タイトルや本文を指定した文字数分だけ表示したい時があります。

WordPressのテンプレートタグで「the_excerpt()」というものもありますが、抜粋の文字数はデフォルトで55単語、日本語などのマルチバイト文字では110文字になっています。簡単に使用できるものではありますが、あまり使い勝手がよいとは言えません。

そこで、通常使用されるタイトル「the_title()」や本文を表示する「the_content()」の文字数制限についてまとめました。

タイトルの文字数制限

タイトルの文字数を30文字に制限する場合

<?php echo mb_substr($post->post_title, 0, 30); ?>

単純に文字数を30文字で区切っているので省略されているとは分かりづらいです。

タイトルの文字数を30文字で制限して、それ以上は省略させる

<?php echo mb_substr($post->post_title, 0, 30) . '…'; ?>

最後に省略記号を付けることでタイトルが省略されていることが一目で分かります。

タイトルの文字数を30文字で制限して、それ以上なら省略させる

<?php
if ( mb_strlen( $post->post_title, 'UTF-8' ) > 30 ) {
  $title = mb_substr( $post->post_title, 0, 30, 'UTF-8' );
  echo $title . '…';
} else {
  echo $post->post_title;
}
?>

まず、タイトルの文字数をカウントして30文字以上と未満で条件分岐させています。
文字数を指定するところは「2箇所」あるのでご注意ください。

本文の文字数制限

タイトルと同じようにすれば本文も同様に文字数を制限することが出来ますが、本文にはHTMLタグが存在する場合などあるのでHTMLタグを削除する必要があります。

本文の文字数を100文字で制限して、HTMLタグを削除して表示

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

「strip_tags」でHTMLタグを削除しています。
ただし、これだけでは半角スペースが残っているのでこれも削除する必要があります。

本文の文字数を100文字で制限して、HTMLタグを削除、さらに半角スペースを削除して表示

<?php
if ( mb_strlen( $post->post_content, 'UTF-8' ) > 100 ) {
  $content = str_replace( '\n', '', mb_substr( strip_tags( $post->post_content ), 0, 100, 'UTF-8' ) );
  echo $content . '…';
} else {
  echo str_replace( '\n', '', strip_tags( $post->post_content ) );
}
?>

「str_replace」を使用して半角スペースを置換して削除します。
これでレイアウト崩れもせず、無駄な半角スペースを削除したスッキリとした本文の文字制限が出来ます。

特定のHTMLタグを残して文字数制限する場合

前述の場合はすべてのHTMLタグを削除しましたが、特定のHTMLタグを残したい場合も出てくるかと思います。
その場合は、以下の方法で特定のHTMLタグを残して文字数制限することが出来ます。

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

上記の場合では、spanとbrを残す場合を例として挙げています。追加する場合は連続してタグを追加してください。

functions.phpでフィルターを使用した文字数制限も可能ですが、すべての箇所で同じ文字数制限となってしますので個人的にはあまり使用しません。この他にも文字数制限のやり方はあるかと思うので参考にしてもらえればと思います。

Contactお問い合わせ・お見積り

ホームページ制作のご相談、お見積りのご依頼、Web制作に関するご不明点などお気軽にお問い合わせください。

新規のご依頼は2021年09月制作スタート

まずは無料見積り

PAGE TOP