【WP】WordPressの本文抜粋・本文の一部を取得する

【WP】WordPressの本文抜粋・本文の一部を取得するWordPressで投稿された記事の本文の一部「抜粋」を取得するために、テンプレートタグthe_excerpt()とget_the_excerpt()があります。the_excerpt()とget_the_excerpt()は、投稿時に抜粋欄へ入力があればその内容が表示され、抜粋が抜粋を入力されていない場合は投稿内容の最初の55個の単語まで表示されます。英語では単語が空白スペースで区切られているため、単語数をカウントできますが、抜粋や本文が日本語の場合は、正しく単語が判別されず本文をすべて表示されてしまうことがあり、正しく表示するためには「WP Multibyte Patch」のプラグインを有効にしておく必要があります。「WP Multibyte Patch」のプラグインを有効になっている場合、the_excerpt() とget_the_excerpt()は、110文字を表示します。また、the_excerpt() とget_the_excerpt()では取得された文字の最後に[…] を付与します。

the_excerpt()とget_the_excerpt()の特徴

the_excerpt()とget_the_excerpt()は、HTMLタグ、ショートコードのタグは表示されずに、表示されます。どちらもループの中での利用になります。

the_excerpt()の使い方

the_excerpt()は、echoを使わず抜粋を表示することができます。また、表示される際は前後に<p>></p>が付与され表示されます。

<?php the_excerpt(); ?>

get_the_excerpt()の使い方

get_the_excerpt()は、ページに出力することがないため、変数に値を読み込み文字列を加工することや、echoで表示することができます。

<?php echo get_the_excerpt(); ?>

the_excerpt()とget_the_excerpt()で取得できる文字数を変えたい場合

function.php内に以下のコードを追記することで取得できる文字数を変えることができます。

function wpdocs_custom_excerpt_length( $length ) {
    return 200;
}
add_filter( 'excerpt_length', 'wpdocs_custom_excerpt_length', 999 );

ページごとに表示数を変えたい場合は、get_the_excerpt()で取得後、mb_substrを使い文字数を制御することができます。

<?php echo mb_substr(get_the_excerpt(), 0, 100); ?>