【WordPress】記事の抜粋(excerpt)の長さと省略記号[…]を変更する方法

【WordPress】記事の抜粋(excerpt)の長さと省略記号[…]を変更する方法 WordPress

WordPress の記事一覧やウィジェットで表示される「抜粋(excerpt)」は、デフォルトでは 55 語にカットされ、最後に [...] が自動的に付与されます。英語サイト向けの仕様であるため、日本語サイトでは長すぎたり、逆に短く感じることも少なくありません。ここでは、抜粋の長さと省略記号をカスタマイズする方法を解説します。

抜粋の長さを変更する

抜粋の文字数(正確には「単語数」)を制御するには、excerpt_length フィルターを使います。日本語ではスペースで区切られないため、「文字数」で扱うより「任意の値に調整する」という使い方が実務的です。

<?php
// 抜粋の長さを 80 に変更
add_filter('excerpt_length', function ($length) {
    return 80;
}, 999);

この例では抜粋の長さを「80」に設定しています。日本語ではスペース区切りがないので、単語数の概念は曖昧ですが、指定値を増減して調整すればおおよその長さをコントロールできます。

省略記号[…]を変更する

抜粋の末尾に自動で追加される [...] を変更するには、excerpt_more フィルターを利用します。テキストだけでなく、リンクを仕込むことも可能です。

<?php
// 抜粋の省略記号を「…続きを読む」に変更
add_filter('excerpt_more', function ($more) {
    return '...続きを読む';
});

ボタン風にリンクを追加したい場合は以下のように書けます。

<?php
add_filter('excerpt_more', function ($more) {
    global $post;
    return '... <a href="' . get_permalink($post->ID) . '" class="read-more">続きを読む</a>';
});

テーマで直接抜粋を制御する場合

自動生成された excerpt ではなく、the_excerpt() を呼び出して独自にカスタマイズしたい場合、wp_trim_words() を使うと柔軟に文字数と末尾を指定できます。

<?php
$content = get_the_content();
$excerpt = wp_trim_words($content, 100, '...続きを見る');
echo '<p class="excerpt">' . $excerpt . '</p>';

この方法なら、記事ごとに統一された抜粋ルールを適用でき、一覧デザインを崩さずに運用できます。

まとめ

WordPress の抜粋はデフォルトのままでは使い勝手が悪く、日本語サイトでは特に調整が必要です。excerpt_length フィルターで長さを変え、excerpt_more フィルターで省略記号やリンクを変更すれば、ユーザーにとって読みやすい記事一覧が作れます。さらに柔軟に扱いたい場合は wp_trim_words() を活用し、テーマに合わせてカスタマイズするのがおすすめです。