the_excerpt()

目次

the_excerpt()とは?

the_excerpt() は、投稿や固定ページの本文を短くまとめた「抜粋(エグゼルプ)」を表示するための関数です。
ブログのトップページやカテゴリページなどで、全文の代わりに要約だけを表示したいときに使われます。

the_excerpt()の基本構文

<?php the_excerpt(); ?>

この関数は echo の役割を持っているため、echo the_excerpt(); のように書く必要はありません。

the_excerpt()はどこで使われる?

the_excerpt() は以下のようなページテンプレートで使用されます:

  • 投稿一覧ページ(index.php)
  • カテゴリーページ(category.php)
  • タグページ(tag.php)
  • 検索結果ページ(search.php)
  • アーカイブページ(archive.php)
  • カスタム投稿タイプの一覧

これらのテンプレート内で、以下のように記述することが一般的です。

<article>
  <h2><?php the_title(); ?></h2>
  <?php the_excerpt(); ?>
</article>

抜粋の取得方法は2通り

WordPress では、抜粋(excerpt)の内容は次のようにして決定されます。

① 投稿者が「抜粋」欄に直接入力した場合

→ 入力した内容がそのまま表示される

② 入力がない場合

→ 本文の冒頭から自動的に**55語(単語)**までを取得して表示

※この55語という制限はフィルターで変更可能です(後述)

自動生成された抜粋の仕様

自動生成される抜粋は以下のようなルールで決定されます。

  • 改行・段落・HTMLタグは削除される
  • <script>やショートコードも無視される
  • 英語環境では55単語、日本語では55文字前後(内部的には mb_strlen を使用)

出力例

本文が以下のような場合:

<p>これはテスト投稿です。WordPressの抜粋について学びましょう。</p>

出力されるのは:

これはテスト投稿です。WordPressの抜粋について学びましょう。

※HTMLタグはすべて除去されます。

「…」と表示される省略記号(more)

抜粋の最後にはデフォルトで [...](または ...)という省略記号が付けられます。
これもフィルターでカスタマイズ可能です。

抜粋の表示をカスタマイズする方法

フィルター①:excerpt_length

抜粋の長さ(単語数)を変更するにはこのフィルターを使います。

function custom_excerpt_length( $length ) {
  return 100; // 100語に設定
}
add_filter( 'excerpt_length', 'custom_excerpt_length' );

フィルター②:excerpt_more

省略記号 [...] を変更するには次のようにします。

function custom_excerpt_more( $more ) {
  return '... <a href="' . get_permalink() . '">続きを読む</a>';
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );

抜粋を出力せず取得するには?(get_the_excerpt)

the_excerpt() は出力しますが、内容を取得して処理したい場合は get_the_excerpt() を使います。

$excerpt = get_the_excerpt();
echo '<p>' . esc_html( $excerpt ) . '</p>';

HTMLを残して抜粋を出したいときは?

the_excerpt() はHTMLタグをすべて削除します。
しかし、どうしても <strong><a> などのタグを残したいときにはカスタム関数で対応します。

例:一部のタグだけ許可する抜粋関数

function my_custom_excerpt($text, $length = 100) {
  $text = wp_strip_all_tags($text); // タグ除去
  $text = mb_substr($text, 0, $length) . '...';
  return $text;
}

「the_content()」との違い

関数名内容特徴
the_content()本文すべてを表示HTMLあり、ショートコード有効
the_excerpt()要約だけ表示HTMLなし、自動生成対応

どちらを使うべき?

  • 一覧ページや検索結果 → the_excerpt()
  • 単一投稿ページ → the_content()

抜粋表示でよくあるミス

よくある間違い解説
抜粋が表示されないテーマで the_excerpt() が使われていない場合があります
改行が効かないHTMLタグが除去されているためです
画像が表示されない抜粋には img タグが含まれません
ショートコードが表示されてしまう自動的に展開されません(明示的に除外されます)

Gutenberg(ブロックエディタ)との関係

Gutenbergでも「抜粋」欄はクラシックと同様に表示され、手動で入力が可能です。

  • ブロックの一部としてではなく、投稿設定パネル内に「抜粋」欄があります
  • 手動入力がないと、テーマの設定に応じて自動生成されます

the_excerpt()の使用例:カードデザインの一覧

<article class="post-card">
  <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
  <div class="excerpt"><?php the_excerpt(); ?></div>
</article>

CSSで以下のようにスタイルを整えると、読みやすい一覧になります。

.excerpt {
  color: #555;
  font-size: 0.95em;
  line-height: 1.6;
}

the_excerpt()のまとめ

項目内容
関数名the_excerpt()
用途投稿の要約(抜粋)を表示
出力内容手動入力 or 本文から自動生成(最大55語)
HTMLすべて除去される(カスタマイズで調整可)
ショートコード無効(展開されない)
フィルターexcerpt_length, excerpt_more などでカスタマイズ可能
関連関数get_the_excerpt(), the_content()

the_excerpt() は、投稿一覧ページをスッキリと見せたいときや、SEOやユーザー体験を意識したページ設計に欠かせない関数です。
カスタマイズの自由度も高く、フィルターや関数を併用すれば「抜粋にボタンを追加」「HTMLタグを残す」「文字数調整」など、柔軟に対応できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次