なんかうまくいかなかったので共有。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’);