WordPressテーマには、投稿の編集画面に「抜粋」と呼ばれる以下のようなフィールドが存在します。

クラシックエディタの抜粋 ブロックエディタの抜粋
クラシックエディタ ブロックエディタ

この抜粋機能の利用用途は、テーマやプラグインによって様々ですが、一般的に記事一覧の抜粋に表示することが多いです。

当記事では、この抜粋の基本的な取得方法〜カスタマイズ方法について解説していきます。

WordPressの抜粋を取得・表示できる関数2つ

抜粋を扱う関数は主に以下の2つです。

the_excerpt() 抜粋の出力(自動的にpタグで囲まれる) 公式ページ
get_the_excerpt() 抜粋の取得(pタグで囲まれない) 公式ページ

これらは抜粋フィールドが入力されているかどうかで挙動が変わります。抜粋未入力の場合に取得する内容は以下になります。

  • 本文に書かれた内容の冒頭から110文字(英語版は55文字)までを取得・表示
  • 文字数制限を超えると[…]が末尾に付く
  • 「moreタグ」が本文内にあればそれまでを取得
文字数のカウントがうまくいかない場合は、WordPress 日本語版パッケージのためのマルチバイト機能の拡張プラグイン「WP Multibyte Patch」をインストールしてください。

the_excerpt()

抜粋に入力された文章を出力する関数です。(変数に格納するような使い方はできません。)PHPファイルに書き込むことで、以下の出力結果になります。

// 抜粋に「こちらは抜粋文です。」と入力されている場合
the_excerpt();

// 出力結果
// <p>こちらは抜粋文です。</p>

なお、こちらは抜粋を表示する前にフィルターを適用するため、文章が自動的にpタグで囲まれ、改行箇所にbrタグが挿入されます。WordPressループの外では使えません。

get_the_excerpt()

抜粋文を文字列で取得できる関数です。抜粋に入力された文章を返すだけなので、変数へ格納する、出力するなどの使い方ができます。

// 抜粋に「こちらは抜粋文です。」と入力されている場合
$excerpt = get_the_excerpt();

// サイト上に出力
echo $excerpt;

// 出力結果
// こちらは抜粋文です。

the_excerpt()とは異なり、自動的にpタグで囲むなどのフィルターを通しません。入力された文章をそのまま利用したい方は、こちらの関数を利用しましょう。

なお、こちらは引数に投稿ID(投稿オブジェクトも可)を指定することで、WordPressループ外で利用できます。

// 投稿IDが56の抜粋文を取得
get_the_excerpt( 56 );

抜粋のカスタマイズ方法4つ

テーマ開発するなら、抜粋文の仕様を変えたい方が多いと思います。今回は、以下の4つのカスタマイズ方法についてご紹介していきます。

  • 抜粋の文字数制限を変更
  • 末尾の省略記号[…]を変更
  • 自動挿入されるHTMLタグを除去
  • 固定ページで抜粋を有効化

抜粋の文字数制限を変更

抜粋文の取得には、110文字までの制限が存在します。こちらの制限文字数は、以下をfunctions.phpに記載することで変更できます。

// 文字数制限を110から200に変更
add_filter( 'excerpt_length', function( $length ){
  return 200;
}, 999 );

上記は、110文字から200文字に変更する内容となっておりますが、200の箇所を他の数値に変えていただくことで、制限数を変更できます。

末尾の省略記号[…]を変更

文字数制限を超えると、自動的に[…]が挿入されます。この記号を変更する場合は、以下をfunctions.phpに記入してみてください。

// 省略記号を「…」に変更する
add_filter( 'excerpt_more', function( $more ){
  return '&hellip;';
}, 999 );

上記は、「…」に変更するサンプルですが、他の記号に変更したい方は「&hellip;」をお好きな文字列に変更してください。

なお、抜粋文の末尾に「続きを読む」リンクを付けたい方は、以下を記入することで実現できます。

// 省略記号を「… 続きを読む」に変更する
add_filter( 'excerpt_more', function( $more ){
  return '&hellip; <a class="more-link" href="' . esc_url( get_permalink() ) . '">' . '続きを読む' . '</a>';
}, 999 );

自動挿入されるHTMLタグを除去

the_excerpt()で解説したように、入力した抜粋文には自動的にpタグやbrタグが挿入されます。これを回避する場合は、以下をfunctions.phpに記入します。

// 抜粋の自動整形を無効化
remove_filter( 'the_excerpt' , 'wpautop' );

この1行だけで自動整形機能を無効化できるので、非常に簡単ですね。

固定ページで抜粋を有効化

固定ページには、デフォルトで抜粋文のフィールドが用意されていません。固定ページでも抜粋文を利用する場合は、以下をfunctions.phpにご記入ください。

// 固定ページの抜粋を有効化
add_post_type_support( 'page' , 'excerpt' );

なお、カスタム投稿は登録時に抜粋を有効化できるか指定できます。もし既存テーマで特定のカスタム投稿の抜粋をする場合は、固定ページと同じように対応できます。

add_post_type_support( 'カスタム投稿名' , 'excerpt' );

// 例)カスタム投稿「news」の抜粋を有効化
add_post_type_support( 'news' , 'excerpt' );

まとめ

今回は、抜粋文の取得・カスタマイズ方法についてご紹介しました。少し仕様が特殊ですが、カスタマイズすれば自分好みに扱うことができるので、ぜひ紹介した内容を試してみてください。

なお、抜粋とセットで使うのが、投稿の基本情報の取得ですよね。以下にタイトルやカテゴリー、アイキャッチ画像の取得方法についても紹介してますので、合わせてご覧ください。