
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タグを残す」「文字数調整」など、柔軟に対応できます。