1. WordPress

get_the_excerpt()を使って概要文を作る方法と抜粋のカスタマイズ方法

Share

WordPressで記事一覧ページを作るときによく使われるのが「記事の概要文(抜粋)」です。

この記事では、WordPressのテンプレートタグ get_the_excerpt() を使って、抜粋(概要文)の出力方法を解説します。

get_the_excerpt()とは?

get_the_excerpt() は、投稿の抜粋(概要文)を取得するテンプレートタグです。

概要文を「表示する」ためには the_excerpt() を使いますが、「取得」したいときは get_the_excerpt() が適しています。

$excerpt = get_the_excerpt();
echo $excerpt;

このように変数に代入できるので、カスタマイズ性の高い出力が可能です。

抜粋の表示ルール

WordPressでは、抜粋が存在する場合はそれが表示されます。

未入力の場合は、本文の冒頭約55語が自動的に生成されます(テーマや設定によって変動あり)。

// 投稿に抜粋があればそれを返す
// なければ本文から自動生成
get_the_excerpt();

実用コード例

投稿一覧ページで概要文を出す例

<?php if (have_posts()) : ?>
  <?php while (have_posts()) : the_post(); ?>
    <div class="post-summary">
      <h2><?php the_title(); ?></h2>
      <p><?php echo get_the_excerpt(); ?></p>
    </div>
  <?php endwhile; ?>
<?php endif; ?>

このように、get_the_excerpt()<p> タグで囲むだけでも、読みやすいレイアウトになります。

以下は、「get_the_excerpt() がループ外で使えるかどうか」に関する補足説明です。記事の中盤~後半に自然に追加できる内容です。

以下は「get_the_excerpt() を使った実用コード例」の追加として適した内容です。実際のサイト制作でよくある「特定カテゴリーの最新投稿を概要付きで表示する」パターンを紹介します。

特定カテゴリーの最新3件を概要付きで表示

<?php
$args = array(
  'category_name' => 'news', // スラッグで指定
  'posts_per_page' => 3,
);
$query = new WP_Query($args);

if ($query->have_posts()) :
  while ($query->have_posts()) : $query->the_post(); ?>
    <div class="news-summary">
      <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
      <p><?php echo get_the_excerpt(); ?></p>
    </div>
  <?php endwhile;
  wp_reset_postdata();
endif;

このコードは、「news」カテゴリーの最新3件を、タイトルと概要付きで表示する例です。

get_the_excerpt() を使うことで、一覧ページでも情報を簡潔に伝えられ、ユーザーが読みたい記事を見つけやすくなります。

get_the_excerpt() はループ外では使えない

get_the_excerpt()基本的にはループ内で使用することが前提の関数です。

これは、関数内部でグローバル変数 $post に依存しているためです。

ただし、ループ外で使用したい場合は、setup_postdata()$post を設定することで利用可能になります。

例:ループ外で特定の投稿の抜粋を取得

$post_id = 123; // 任意の投稿ID
$post = get_post($post_id);
setup_postdata($post);

$excerpt = get_the_excerpt();
echo $excerpt;

wp_reset_postdata();

このように、ループ外で使う場合は $post を明示的に取得し、setup_postdata() を使ってグローバル状態を一時的に整える必要があります。

処理後は wp_reset_postdata() を忘れずに呼び出しましょう。

文字数をカスタマイズしたいとき

標準の抜粋文字数(55語)を変更したい場合、以下のようにフィルターを使います。

function custom_excerpt_length($length) {
  return 100; // 単語数
}
add_filter('excerpt_length', 'custom_excerpt_length');

また、末尾の「[…]」を変えたい場合は次のフィルターを使います。

function custom_excerpt_more($more) {
  return '...';
}
add_filter('excerpt_more', 'custom_excerpt_more');

ACFなどでカスタムフィールドの抜粋を表示したい場合

get_the_excerpt() はデフォルトの投稿本文をベースにしているため、カスタムフィールドに対応するには get_field() と併用し、自前で短く加工する必要があります。

$custom_text = get_field('custom_summary');
$trimmed = wp_trim_words($custom_text, 30, '...');
echo $trimmed;

注意点とおすすめの使い方

  • get_the_excerpt() をそのまま使うと HTML タグは自動で除去されます
  • 改行や画像は含まれず、あくまでテキストのみになります
  • 美しい見た目にするには CSS と組み合わせて調整するのが鍵です

公式ドキュメント