抜粋文が全文出てしまう…
WordPressで日本語が混じった英語のサイトなどを作成しようとした時や、記事を書いている時に、記事一覧の抜粋文が全文出てしまうことでお悩みの方もいらっしゃるのではないでしょうか。
WordPressの設定で「サイトの言語」を English(unitedstates)にした場合、記事一覧ページなどで日本語で入力した記事の抜粋文がほぼ全文表示されてしまうことがあります。
この記事のアイキャッチ画像が抜粋文が実際にほぼ全文出てしまっている状態です。
なぜ全文出てしまうのか
ここでは全文と記述していますが、実際にはデフォルトで55単語という上限があります。
WordPress関数の get_the_excerpt() は wp_trim_excerpt() を使用し半角スペースを基準にデフォルトで 55単語 を抜き出して抜粋文を生成します。
サイトの言語が日本語だと問題はないのですが、サイトの言語をEnglishにしている場合は 55単語 を抜き出すことが出来ずに全文表示されてしまうという現象が起きてしまいます。
WordPressCodex日本語版の excerpt関連のページにも下記のように書かれています。
(注) 日本語のように語句の間を半角スペースで区切らない言語では「55単語」を判定できないため、抜粋できずに本文のほとんどが出力されてしまうことがあります。
WordPress 日本語版では、この問題を含むマルチバイト関連の問題に対処するためにWP Multibyte Patchプラグインを同梱しています。このプラグインを使用すると、110文字まで(設定により変更可)を抜粋文として出力できます。
解決方法
簡単な解決方法は excerpt_lengthフィルター を用いて、抜粋する単語の数を減らしてあげることで解決します。
functions.phpに下記のソースコードを書き込んでみてください。
*下記のソース内にある、return の数を変更することで抜粋したい単語数を変更できます。
function enExcerpt() {
return 10; /* ここを抜き出したい単語の数値に変更 */
}
add_filter('excerpt_length', 'enExcerpt');
functions.phpに記述することで10単語までになります。
実際に記述してみた結果のスクリーンショットがこちらです。
これで英語と日本語が混じったサイトでも日本語の抜粋文が全文表示される現象を解決できるのではないでしょうか。