記事一覧などで、タイトルや本文、カスタムフィールドに入力されたテキストの文字数制限をする

functions.phpに書く方法ではなく、ループの中で設定する方法です。

目次

本文から50文字を抜粋する

  • 本文が50文字以下の場合→全文表示
  • 本文が50文字以上の場合→50文字を抜粋し、文末に「…」を追加
if(mb_strlen(get_the_excerpt(), 'UTF-8') > 50) { // 50字以上の場合は
  $excerpt = mb_substr(get_the_excerpt(), 0, 50, 'UTF-8') ; // 50字でカット
    echo $excerpt . '…'; // 抜粋した50字の後に…を追加
} else {
  echo get_the_excerpt(); // 50字以下の場合はそのまま表示
}

タイトルから20文字を抜粋する

  • タイトルが20文字以下の場合→全文表示
  • タイトルが20文字以上の場合→20文字を抜粋し、文末に「…」を追加

方法は本文抜粋と同じです。

if (mb_strlen($post->post_title, 'UTF-8') > 20){ // 20字以上の場合は
  $title= mb_substr($post->post_title, 0, 20, 'UTF-8'); // 20字でカット
  echo $title . '…'; // 抜粋した20字の後に…を追加
} else {
  echo $post->post_title; // 20字以下の場合はそのまま表示
}

カスタムフィールドから20文字を抜粋する

プラグイン「Advanced Custom Field」を使用している場合の抜粋方法です。

  • カスタムフィールド ‘gaiyo’ を作成済み、フィールドタイプはテキストエリア(テキストでも可)
  • カスタムフィールド ‘gaiyo’に入力された内容が20文字以下の場合→全文表示
  • カスタムフィールド ‘gaiyo’に入力された内容が20文字以上の場合→20文字を抜粋し、文末に「…」を追加
if (mb_strlen(get_field('gaiyo')) > 20){
  $text= mb_substr(strip_tags(get_field('gaiyo')), 0, 20);
  echo $text.'…';
} else {
  echo strip_tags(get_field('gaiyo'));
}

抜粋できない場合はこちらをご確認ください

日本語のように語句の間を半角スペースで区切らない言語では、抜粋できずに本文のほとんどが出力されてしまうことがあります。
その場合は、プラグイン「WP Multibyte Patch」を使用するようにしてください。

日本語のように語句の間を半角スペースで区切らない言語では「55単語」を判定できないため、抜粋できずに本文のほとんどが出力されてしまうことがあります。

WordPress 日本語版では、この問題を含むマルチバイト関連の問題に対処するために WP Multibyte Patch プラグインを同梱しています。このプラグインを使用すると、110文字まで(設定により変更可)を抜粋文として出力できます。

関数リファレンス/wp trim words
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次