WordPressのexcerpt文字数は日本語と英語で違う

投稿記事の一覧などで表示するexcerptの長さ設定は日本語と英語で違います。WordPressでマルチバイトはうまく処理されない部分があるようで、細かな調整はWP Multibyte Patchプラグインが行っているようです。
excerptの長さ設定はフィルターで行うのですが、英語の場合はフィルターで設定した数値は単語数となり、日本語は文字数となります。
理由は、英語の場合単語はスペースで区切られるのでカウントできるのですが、日本語の場合スペースがないのでWP Multibyte Patchプラグインが文字数でカウントするようにしているようです。
なので、excerpt文字数をフィルターで設定した場合は注意が必要です。
以下はフィルターで設定した例です。
function my_length($length) {
    return 50;
}
add_filter('excerpt_mblength', 'my_length');
excerptの長さが日本語では50文字となりますが、英語では50単語となるので表示される文章の長さに差があります。
そこで、以下のように英語のexcerptを追加で設定すると、英語の表示でも日本語と大体同じ長さになります。
function en_length($length) {
    return 20;
}
add_filter('excerpt_length', 'en_length');
これらを参考にしてもらって、思ったような長さにならない時は、適宜設定している数字を変更してください。

シェアする