WordPressでブログのトップページやカテゴリーページに記事一覧を表示させたり、その記事一覧でタイトルや日付、そして記事本文を抜粋して表示させている場合があると思います。
今回は、記事本文を抜粋表示させている文字数を増やしたり減らしたり、そして文末文字[…]を削除したり、任意の文字に変更しリンクを追加する方法を紹介いたします。
記事本文を抜粋表示させる方法
WordPressで記事本文を表示させるには下記のテンプレートタグを使用します。
<?php the_content(); ?>
そして、記事本文すべてではなく、抜粋して表示させるには、下記のテンプレートタグに変更します。
<?php the_excerpt(); ?>
こちらのテンプレートタグを使用した場合、記事本文の先頭から110文字、そして文末に[…]が表示されます。
[…]こちらの文字列は設定されている文字数を超えると「本文を抜粋して表示しているので続きがありますよ」といったニュアンスですね。
そして、先ほど「110文字」と説明しましたが、1つ注意として日本語環境の場合、英語と違って全角半角といった文字があるため、この文字数が正常にカウントされない可能性があります。
そのため、WordPressでは「WP Multibyte Patch」というプラグインがありますので有効化することで、正常に機能してデフォルトの文字数である110文字を表示させることができます。
抜粋表示させる文字数を変更する方法
デフォルトの文字数である110文字は多いので、抜粋表示させる文字数を減らしたい、または逆に110文字では少ないので、増やしたい場合があると思います。
仮に、抜粋表示させる文字数を80文字にしたい場合。
使用中のテーマ内にある「functions.php」ファイルに、下記を記述します。
//概要(抜粋)の文字数調整
function my_excerpt_length($length) {
return 80;
}
add_filter('excerpt_length', 'my_excerpt_length');
2行目の「return 80;」の「80」で文字数を指定しています。
先ほどのテンプレートタグ「the_excerpt()」関数を挿入した部分に、80文字の抜粋が表示されます。
このように文字数を変更するため、ここでは「add_filter」というWordPressのフィルターフックを使用しています。
文末の[…]を削除する方法
デザインなどの理由により、文末の[…]を削除したい場合があると思います。
使用中のテーマ内にある「functions.php」ファイルに、下記を記述します。
//概要(抜粋)の省略文字
function my_excerpt_more($more) {
return ”;
}
add_filter('excerpt_more' , ' my_excerpt_more' );
こちらで、文末の[…]が表示されなくなります。
文末の[…]を別の文字に変更する方法
デザインなどの理由により、文末の[…]を別の文字に変更したい場合があると思います。
[…]こちらの「角括弧」はいらないので「… 三点リーダー」だけにしたい場合。
使用中のテーマ内にある「functions.php」ファイルに、下記を記述します。
//概要(抜粋)の省略文字
function my_excerpt_more($more) {
return '…';
}
add_filter('excerpt_more', 'my_excerpt_more');
こちらで、文末の「角括弧」がなくなり、「… 三点リーダー」のみが表示さます。
もちろん、「…続きを読む」などの別の文字列に変更しても大丈夫ですので、「return ‘…’;」の部分を「return ‘…続きを読む’;」というように用途に応じて変更してください。
別の文字に変更して、その記事へのリンクを追加する
先ほどの「…続きを読む」のような形になると、その記事へのリンクを追加したいと思います。
使用中のテーマ内にある「functions.php」ファイルに、下記を記述します。
function my_excerpt_more($post) {
return '<a href="'. get_permalink($post->ID) . '">' . '…続きを読む' . '';
}
add_filter('excerpt_more', 'my_excerpt_more');
こちらで、「…続きを読む」にその記事へのリンクが追加されます。
ページの種類ごとに抜粋表示させる文字数を変更する方法
全体の文字数の設定を上記の方法で行ったとして、ページの種類ごとに抜粋表示させる文字数を変更したい場合があると思います。
例えばカテゴリーベージだけ60文字にして、その他のページは上記の方法を使って最大で80文字のままにしておく場合。
カテゴリーページを生成しているテンプレートファイル(category.php)の60文字の抜粋表示をさせたい部分に下記を追加します。
<?php echo mb_substr(get_the_excerpt(), 0, 60); ?>
こちらで、カテゴリーページのみ60文字となり、その他のページは80文字の抜粋表示になります。
mb_substr()は「対象の文字列」「取り出し開始位置(0なら先頭)」「取り出す文字のバイト数」を指定して文字列を取り出すことができます。
mb_substr(対象の文字列, 取り出し開始位置, 取り出す文字数)
まとめ 抜粋表示する文字数と文末の[…]を変更する方法
このように必要に応じて、記事本文を抜粋表示する文字数や文末の[…]を変更することができます。
ブログのスマートフォンサイトなど、限られたスペースで情報を表示させる必要があると思います。必要のないものはカットしたり、文字数を制限したり、コンテンツの重複などSEO的なことも考慮しつつ、調整してください。