WordPress:the_excerpt()でうまくトリミングされない?の解決。

最終更新:2017-05-28 by Joe

なんかうまくいかなかったので共有。excerpt_mblengthやってるのに、全然利かないみたいな動作。

まず、前提:the_excerpt とか、get_the_excerpt()は自動で本本をトリミングしてくれる事になっている。

ただし、これは日本語ではなく、「英語の文字列」が前提なのだ。(と、調べて分かった)。どうやら、英語の半角スペースを探して「単語数」を判断するしくみらしい。なるほどね。初期設定は55単語。

 

当然だが、これが日本語ではうまく判定されず、半角スペースがないし、マルチバイトだし、という問題で、だらーっと長い文字列で返される、悲しい。

ここで日本語版ワードプレスに初期インストールされているWP Multibyte Patchプラグインの出番です。なかったらインストールして。とにかく有効化。

 

できた!と、通常はこれだけで、うまくいくようなきがしたんだが、なんかさくらレンタルサーバーでうまくいかなかった。ローカルではちゃんとトリミングされているのに。

解決策としては、/wp-content/plugins/wp-multibyte-patch にある、wpmp-config-sample.phpがこのプラグインの設定のテンプレになってるから、それを/wp-content/にファイル名変更して、wp-content配下に移動しろと。

えいやーと、
mv wpmp-config-sample ../../wpmp-config.php

 

はい。解決。

別に設定ファイル内は、なにもいじってないんだけどね。ひとまず解決できたので、あまり深追いせず。。

 

ついでにContact-form-7プラグイン使う人は、これ必須ね。

 

wpmp-config.php内に、こういう設定あるから。これ文字コード設定しないといろいろ困るよ。ちゃんとテストしてね。

/**
* wp_mail() の文字エンコーディング
*
* この設定は WordPress から wp_mail() を通して送信されるメールに適用されます。
* 指定可能な値は、’JIS’、’UTF-8’、’auto’ です。
* この設定は $wpmp_conf[‘patch_wp_mail’] が false の場合は無効となります。
*/
$wpmp_conf[‘mail_mode’] = ‘UTF-8’;

いちおう抜粋の長さと末尾を変える方法も書いとく。ぐぐれば大量にひっかかりますが。

長さ:
function new_excerpt_mblength($length) {
return 20;
}
add_filter(‘excerpt_mblength’, ‘new_excerpt_mblength’);

末尾:
function new_excerpt_more($more) {
return ‘…..’;
}
add_filter(‘excerpt_more’, ‘new_excerpt_more’);