- 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細)
テンプレートタグ/the excerpt
目次
説明
このテンプレートタグ the_excerpt()
は、現在の投稿の抜粋を、文末に [...](角括弧+三点リーダー)をつけて表示します。この三点リーダーは「続きを読む」リンクではありません。抜粋を直接表示するために使われますが、get_the_excerpt() から返された文字列に開始と終了の <p> タグを追加します。投稿作成/編集画面 の抜粋文入力欄に記入してあればそれを、抜粋を入力していない場合は投稿内容の最初の 55個の単語までを表示します(注)。また、抜粋のコンテンツからは HTML タグと画像は取り除かれます。このタグはループ内でのみ使えます。
現在の投稿が attachment.php および image.php テンプレートループ内の attachment/en の場合、attachment のキャプションを表示します。キャプションには、抜粋の [...] 記号は含まれません。
(注) 日本語のように語句の間を半角スペースで区切らない言語では「55単語」を判定できないため、抜粋できずに本文のほとんどが出力されてしまうことがあります。
WordPress 日本語版では、この問題を含むマルチバイト関連の問題に対処するために WP Multibyte Patch プラグインを同梱しています。このプラグインを使用すると、110文字まで(設定により変更可)を抜粋文として出力できます。
the_excerpt() と the_content()
敢えてthe_content() 関数を使うことに意味がある場合があります。 それはこの関数が、投稿本文内に <!--more--> タグが使用されているかどうかによって表示内容が変わるためです。<!--more--> タグは、挿入した位置で本文を2つに分けます。メインブログページやアーカイブといったリスト形式のページではこのタグより前の部分のみを表示します。個別投稿/ページでは(もちろん) <!--more--> タグが無視され、本文全てを表示します。
使い方
<?php the_excerpt(); ?>
パラメータ
このタグはパラメータをとりません。
用例
初期設定での使用
投稿の抜粋を表示します。個別投稿を表示する時以外に the_content() の代わりにループ内で強制的に抜粋を表示するときに使用します。
<?php the_excerpt(); ?>
条件分岐タグとの使用
アーカイブページ (is_archive()
で判定) またはカテゴリーページ (is_category()
で判定) 表示時に、the_content()
タグの替わりに the_excerpt()
を用いて抜粋文を表示する例です。
次の例は、WordPress バージョン 1.5 以上で動作します。
<?php if ( is_category() || is_archive() ) { the_excerpt(); } else { the_content(); } ?>
フィルターで抜粋の長さの変更
デフォルトでは、抜粋の長さは 55 単語です(日本語の場合は冒頭の注参照)。excerpt_length/en フィルターを使用して長さを20単語に変更するには、テーマの functions.php
ファイルに以下のコードを追加します。
function custom_excerpt_length( $length ) { return 20; } add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
フィルターで [...] 文字列の変更・削除
WordPress version 2.9では概要の[...]文字列を変更するための新たなフィルターが追加されました。下記メソッドは適切なWordPress versionに対して使用してください。両方を同時に使用しないでください。
バージョン 2.9 以降のみ
デフォルトでは、抜粋の最後の文字列は '[...]' になっています。excerpt_more/en フィルターを使用して文字列を変更するには、テーマの functions.php
ファイルに以下のコードを追加します。
function new_excerpt_more($more) { return '[.....]'; } add_filter('excerpt_more', 'new_excerpt_more');
バージョン 2.8.x 以前の場合
function new_excerpt_more($excerpt) { return str_replace('[...]', '...', $excerpt); } add_filter('wp_trim_excerpt', 'new_excerpt_more');
投稿で "read more" リンクを作成する
投稿で "read more" リンクを作成するには、テーマの functions.php に以下のコードを挿入してください。
function new_excerpt_more( $more ) { return ' <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">Read More</a>'; } add_filter( 'excerpt_more', 'new_excerpt_more' );
注: このリンクは新しい行には現れません。CSSをのread-moreクラスを用いる必要があります。
Notes
- Uses: get_the_excerpt/en.
- Uses: apply_filters()/en for 'the_excerpt'.
変更履歴
Since: 0.71
ソースファイル
the_excerpt() は、wp-includes/post-template.php
にあります。
関連
投稿タグ:
body_class(),
next_image_link(),
next_post_link(),
next_posts_link(),
post_class(),
post_password_required(),
posts_nav_link(),
previous_image_link(),
previous_post_link(),
previous_posts_link(),
single_post_title(),
sticky_class(),
the_category(),
the_category_rss(),
the_content(),
the_content_rss(),
the_excerpt(),
the_excerpt_rss(),
the_ID(),
the_meta(),
the_shortlink(),
the_tags(),
the_title(),
the_title_attribute(),
the_title_rss(),
wp_link_pages(),
最新英語版: WordPress Codex » Template Tags/the excerpt (最新版との差分)