WordPressには抜粋表示するWordpress関数(テンプレートタグ)がいくつか用意されています。
今回はその中でも使用されている比率が高いと思われるthe_excerpt()について解説していきます。
the_excerpt関数について
the_excerpt()は、記事を抜粋表示する関数となります。
WordPressの記事編集画面内に以下画像のような「抜粋」というフィールドがあり、その中に入力されているかどうかで挙動が変わります。
「抜粋」フィールドに入力されている場合
入力されている内容がそのまま出力されます。
「抜粋」フィールドに入力されていない場合
本文の冒頭から指定文字数(デフォルトでは日本語版は110文字、英語版は55文字)が抜粋表示されます。
指定文字数を超えると末尾に「[…]」が表示されます。
また、「moreタグ」が本文内にある場合は、そこまでの内容を取得します。
the_excerpt関数の使い方
the_excerpt()はループ内でのみ使用可能な関数となり、抜粋テキストを取得・出力します。
使用方法は以下のようになります。
<?php the_excerpt(); ?>
the_excerpt()は文章に自動的にHTMLのpタグで囲まれ、改行部分にはbrタグが挿入されます。
get_the_excerpt関数の使い方
get_the_excerpt()は抜粋テキストを取得する事が出来る関数です。取得のみとなりますので、変数に格納したり出力する必要があります。使用方法は以下のようになります。
<?php
$excerpt_text = get_the_excerpt();
echo $excerpt_text;
?>
get_the_excerpt()はループ内でもループ外でも使用する事が可能ですが、ループ外で使用する場合は引数に記事IDの指定が必要となります。
<?php
// ループ外で使用する場合は引数に記事IDの指定が必要
$excerpt_text = get_the_excerpt(50);
echo $excerpt_text;
?>
また、get_the_excerpt()はthe_excerpt()とは異なり、自動的にpタグで囲まれたり、brタグの挿入はされません。
表示される文字数や、末尾の記号などのその他の仕様に関してはthe_excerpt()と同じとなります。
抜粋する文字数が合わない場合
日本語で抜粋する文字数が合わない場合は、WordpressのプラグインであるWP Multibyte Patchを使用してみてください。このプラグインが無い場合、文字数が正しくカウントされない場合があります。
抜粋する文字数の変更方法
抜粋する文字数はデフォルトでは110文字となっています。
文字数を変更するにはfunctions.phpに以下を記述する事で変更可能となります。
// 抜粋する文字数を110文字から80文字に変更
add_filter('excerpt_length', function($length){
return 200;
}, 999);
上記例では、抜粋する文字数を110文字から80文字に変更しています。
末尾の記号の変更方法
抜粋する文字数を超えている場合は自動的に「[…]」が表示されます。
この記号を変更する場合はfunctions.phpに以下を記述する事で変更可能となります。
// 末尾の記号を「…」に変更する
add_filter('excerpt_more', function($more){
return '…';
}, 999);
上記例で末尾の記号を「…」に変更しています。
他の記号やテキストに変更したい場合はこの部分を変更してください。
自動で挿入されるHTMLタグを除去する方法
先ほど解説したように、the_excerpt()では自動的にpタグで囲まれ、改行はbrタグが挿入されます。
このHTMLタグを挿入しないようにするには、functions.phpに以下を記述します。
// 抜粋表示の自動整形を無効化
remove_filter('the_excerpt','wpautop');
固定ページやカスタム投稿で抜粋フィールドを有効にする方法
デフォルトでは固定ページやカスタム投稿には「抜粋」フィールドがありません。
固定ページやカスタム投稿でも「抜粋」フィールドを使用するにはfunctions.phpに以下を記述します。
// 固定ページで抜粋フィールドを有効化
add_post_type_support('page','excerpt');
// カスタム投稿「news」で抜粋フィールドを有効化
add_post_type_support('news','excerpt');
その他の抜粋・省略表示方法
その他の方法で抜粋・省略表示をするには以下の方法があります。
- wp_trim_wordsで記事のタイトルや本文の表示文字数を制限
wp_trim_wordsで記事のタイトルや本文の表示文字数を制限する方法【WordPress】 - CSSで文字数ではなく行数で抜粋表示
CSSで複数行の文末を三点リーダーで省略表示する方法【CSS】 - PHPの関数を使って表示文字数を制限
PHPの関数を使って表示文字数を制限する方法【PHP】
さいごに
いかがでしたでしょうか。
今回は、記事を抜粋表示する関数the_excerpt()の使い方とカスタマイズ方法を解説しました。
抜粋表示は投稿の一覧ページなどでよく使用しますので、ぜひ使ってみてください。