WordPressで抜粋の文字数や文末文字を変更する方法
今まで「抜粋」を使用してこなかったのですが、必要な場面に出くわしたので調べました。
抜粋の表示文字数の変更と文末の […] を変更したりします。
目次
- WordPressの抜粋って?
- 抜粋を表示させる
- 文字数を指定する
- 文末の[…]を変更する
- 自動で挿入されるpタグを消す
Advertising
WordPressの抜粋って?
投稿画面の「抜粋」欄に入力した文章か、抜粋欄に入力がなければ本文の最初の110文字が表示されます。
抜粋欄はデフォルトでは投稿ページに表示されていないはずなので、使用したい時は「表示オプション」から「抜粋」にチェックを入れて表示させます。
抜粋を使用するためには、WordPressインストール時にデフォルトで入っているプラグイン「WP Multibyte Patch」を有効にしておく必要があります。
プラグインを有効にする理由は下記の引用のとおりです。
(注) 日本語のように語句の間を半角スペースで区切らない言語では「55単語」を判定できないため、抜粋できずに本文のほとんどが出力されてしまうことがあります。
WordPress 日本語版では、この問題を含むマルチバイト関連の問題に対処するために WP Multibyte Patch プラグインを同梱しています。このプラグインを使用すると、110文字まで(設定により変更可)を抜粋文として出力できます。
テンプレートタグ/the excerpt – WordPress Codex 日本語版
今回は抜粋欄を使用せず、本文から抜き出す形の抜粋を使用し、表示の方法をカスタマイズするお話しをしていきます。
抜粋を表示させる
抜粋を表示したい場所に< ?php the_excerpt(); ?>
と記述します。これで抜粋が表示されます。
表示の内容は、「本文の最初の110文字+ […]」がpタグで囲まれている状態です。
ですが、これでは使い勝手が悪いのでカスタマイズしていきます。
文字数を指定する
今回は110文字では少し多かったので、80文字に変更します。
下記のコードをfunctions.phpに記述します。
function custom_excerpt_length( $length ) {
return 80;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
2行目のreturnの後に指定したい文字数を入れます。
文末の[…]を変更する
[…]だとおかしい気がするので、表記を変えます。今回は「…」となるようにします。
function new_excerpt_more($more) {
return ' ... ';
}
add_filter('excerpt_more', 'new_excerpt_more');
2行目のreturn ‘ … ‘の’ ‘の中を書き換えます。
自動で挿入されるpタグを消す
抜粋のスタイリングにclassをつけている場合など、自動挿入のpタグが邪魔なことがあります。というか、邪魔でした。
そこで、この邪魔なpタグを削除する方法を探したところ、2つ見つかりました。
pタグ削除方法1
get_the_excerpt()
を使う。
< ?php the_excerpt(); ?>
ではなく、< ?php echo get_the_excerpt(); ?>
と記述することでpタグの自動挿入を回避します。
pタグ削除方法2
functions.phpに
remove_filter('the_excerpt', 'wpautop');
を加える。
以上2つの方法でした。
WordPress Codexの「テンプレートタグ/the excerpt」のページに
抜粋を直接表示するために使われますが、get_the_excerpt() から返された文字列に開始と終了の
タグを追加します。
テンプレートタグ/the excerpt – WordPress Codex 日本語版
とあったので、< ?php echo get_the_excerpt(); ?>
と記述した方が素直かなと思い方法1を採用しました。
参考サイト
テンプレートタグ/the excerpt – WordPress Codex 日本語版
テンプレートタグ/get the excerpt – WordPress Codex 日本語版