WordPress タイトルや本文で表示する文字数を制限する方法

WordPress タイトルや本文で表示する文字数を制限する方法

WordPress でタイトルや本文で表示する文字数を制限する方法を紹介します。
例えば、投稿一覧で本文の冒頭だけを表示したいときに便利な方法です。
文字数制限の方法を大まかに分けると WordPress 関数と PHP 関数を使った二種類の方法があります。

  1. WordPress の関数 wp_trim_words を使った方法
    1. タイトルの表示文字数を制限する
    2. 本文の表示文字数を制限する
  2. PHP の関数を使った方法
    1. 本文の表示文字数を制限する

WordPress の関数 wp_trim_words を使った方法

WordPress の関数 wp_trim_words を使った文字数制限の方法を紹介します。
この関数はテキストの先頭から指定された数の文字を取り出して表示します。

<?php echo wp_trim_words( $text, $num_words, $more ); ?>

wp_trim_words は文字列に含まれる HTML タグを自動で取り除いてくれます。
自動で取り除く必要がなければ、後述する PHP の関数を使った方法を参照してください。

この関数のパラメータは次の通りです。

$text
取り出す前の文字列を指定します。
初期値:なし
$num_words
文字数を指定します。
初期値:55(WP Multibyte Patch 有効化時は 110)
$more
取り出した最後の文字列に追加する文字を指定します。
初期値:…(…)

WordPress の日本語版ではマルチバイトの問題があるため WP Multibyte Patch プラグインを有効化して使用してください。

タイトルの表示文字数を制限する

投稿タイトルの表示文字数を制限する方法を紹介します。
次のコードは、タイトルを18文字取り出して最後に「…」を追加する方法です。

<?php echo wp_trim_words( get_the_title(), 18, '...' ); ?>

本文の表示文字数を制限する

投稿本文の表示文字数を制限する方法を紹介します。
次のコードは、本文を55文字取り出して最後に「…」を追加する方法です。

<?php echo wp_trim_words( get_the_content(), 55, '...' ); ?>

日本語の場合に指定した文字数が正しく取り出せないときは WordPress のプラグイン WP Multibyte Patch を有効化してください。

PHP の関数を使った方法

PHP の関数を使った文字数制限の方法を紹介します。
WordPress の関数とは違い調整しやすい点が特徴です。

本文の表示文字数を制限する

PHP の関数を使って本文の表示文字数を制限する方法を紹介します。
次のコードは、本文の文字列から HTML や PHP タグを取り除き、文字数が110文字以上なら文字列の初めから110文字を取り出して最後に「…」を追加、110文字未満であればそのまま表示する方法です。

<?php // 本文の表示文字数を制限する
$post_content = strip_tags(get_the_content()); // 文字列から HTML および PHP タグを取り除く
if(mb_strlen($post_content)>110 ) { // 本文が110文字多ければ true を返す
$post_content = mb_substr($post_content,0,110); // 文字の取り出し
$post_content = str_replace(array("\r", "\n"), '', $post_content).・・・; // 改行の削除、最後に「...」を追加
} else {
$post_content = str_replace(array("\r", "\n"), '', $post_content); // 改行の削除
}
echo $post_content; // 調整した本文の表示
?>

関数の内容は次の通りです。

strip_tags
文字列から HTML および PHP タグを取り除く
mb_strlen
文字数を取得
mb_substr
文字列の一部を取り出す
str_replace
検索文字列に一致したすべての文字列を置換する

まとめ

WordPress でタイトルや本文で表示する文字数を制限する方法を紹介しました。
表示する文字数が指定した数字と異なる場合は、マルチバイトの問題を疑いましょう。
この投稿は関数リファレンス/wp trim words を参考にしています。合わせてご覧ください。