WordPressのthe_excerpt()をカスタマイズする
WordPressのthe_excerpt()は、抜粋を表示するためのテンプレートタグです。ここではTwenty Elevenテーマを使って、the_excerpt()の末尾に表示する内容を変更する方法を解説します。
Twenty Elevenテーマでは、検索結果の本文の一部を表示するためにthe_excerpt()を使っており、抜粋の最後に「続きを読む→」を表示しています。
デフォルトの検索結果
以下、the_excerpt()に掲載されているサンプルを拝借して、カスタマイズ方法を紹介します。それぞれのコードは利用テーマのfunctions.phpに追加してください。
1.末尾の文字列を変更する
function new_excerpt_more($more) {
return ' ..... ';
}
add_filter('excerpt_more', 'new_excerpt_more');
2.末尾に何も出力しないようにする
function new_excerpt_more($more) {
return '';
}
add_filter('excerpt_more', 'new_excerpt_more');
3.「続きを読む」のパーマリンクを設定する
function new_excerpt_more($post) {
return ' <a href="'. esc_url( get_permalink() ) . '">' . 'Read the Rest...' . '</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');
4.Twenty Elevenテーマの場合
冒頭のTwenty Elevenテーマの「続きを読む→」という表示は、functions.phpに次のようなexcerpt_moreフィルタが設定することで実現しています。
function twentyeleven_continue_reading_link() {
return ' <a href="'. esc_url( get_permalink() ) . '">' . __( 'Continue reading <span class="meta-nav">→</span>', 'twentyeleven' ) . '</a>';
}
function twentyeleven_auto_excerpt_more( $more ) {
return ' …' . twentyeleven_continue_reading_link();
}
add_filter( 'excerpt_more', 'twentyeleven_auto_excerpt_more' );
5.excerpt_moreフィルタについて
excerpt_moreフィルタは、wp-includes/formatting.phpのwp_trim_excerpt()に実装されています。
function wp_trim_excerpt($text) {
$raw_excerpt = $text;
if ( '' == $text ) {
$text = get_the_content('');
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
$text = strip_tags($text);
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
$words = preg_split("/[\n\r\t ]+/", $text, $excerpt_length + 1, PREG_SPLIT_NO_EMPTY);
if ( count($words) > $excerpt_length ) {
array_pop($words);
$text = implode(' ', $words);
$text = $text . $excerpt_more;
} else {
$text = implode(' ', $words);
}
}
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
excerpt_moreフィルタでwp_trim_excerpt()を起動する定義は、default-filters.phpにあります。
add_filter( 'get_the_excerpt', 'wp_trim_excerpt' );
6.抜粋の文字数を変更する
本エントリーとは主旨が異なりますが、抜粋に表示する文字数を変更する場合は「WordPressで抜粋の文字数を変更する方法」を参照してください。
英語の場合は次のコードで実現できます。
function new_excerpt_length($length) {
return 20;
}
add_filter('excerpt_length', 'new_excerpt_length');
Posted by yujiro このページの先頭に戻る
- WordPressのタグアーカイブにnoindexを設定する方法
- WordPressで正しいユーザー・パスワードでログインできなくなった場合の対処
- WordPressで抜粋の文字数を変更する方法
- WordPress 3.0にMovable Typeのタグをインポートする
- WordPress 3.0 で廃止された非推奨グローバル変数一覧
- WordPress の the_date を変更して記事ごとに日付を表示する
- 著作権表示の年号を自動更新するプラグイン V1.1 for WordPress
- 著作権表示の年号を自動更新するプラグイン for WordPress
- WordPress でステータスコード 404(Not Found)を返却するエラーページを作る
- WordPress に Movable Type 風の「Syndicate this site」を表示する
- WordPress における日付/時間の表示とフォーマット変更方法
トラックバックURL
トラックバック
≫ WordPressの続きを読むリンクに全文リンクを追加 from プログラミング日記
以前紹介した「WordPressで続きを読むリンクをカスタマイズ」記事に、あるコメントを頂きました。 コメントの内容にリンクが貼られていたのでリンク先を確... [続きを読む]
Tracked on May 4, 2013 8:07 PM
コメントする
greeting