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
コメント