- Article

抜粋プラグイン「Advanced Excerpt」の文字化けを直そう!

Tag:

このサイトでも使用していますが、WordPressで記事のアーカイブを表示する時、本文を抜粋して表示することが多いと思います。
しかしWordPressのデフォルトの抜粋ではHTMLタグが無くなってしまいます。(もちろん改行の<br>タグも)

Advanced Excerptとは?

そんな時便利なのがAdvanced Excerptというプラグイン。

Advanced Excerpt 管理画面

抜粋の文字数を指定したり、どのHTMLタグを抜粋表示でも使用するかなどを設定出来ます。

文字が化ける…

しかし、このプラグイン問題がありまして、たまに抜粋の最後が文字化けしてしまうことがあるんです。

Advanced Excerpt 文字化け

最後の文字が文字化けしている…

原因はこのプラグインが英語圏での使用を念頭に置いて作られているため、マルチバイト文字の日本語で使用すると問題が起きてしまうのです。

どうやって直すの?

そこで解決方法です。
Advanced Excerptプラグインのフォルダの中にある「advanced-excerpt.php」を開くと190行あたりに、下記のようなコードがあります。

ハイライト部分のコードを
$t = mb_substr($t, 0, $c); に書き換えます。(「mb_」を追加する)
それで保存、アップロードすれば完了です。

解説

簡単に解説しますと、substr関数は指定した文字数で切り取る関数ですが、その数の数え方がマルチバイトに対応していないため、半角文字と全角文字が混ざった文章だと、1文字の半分で切られてしまうということが起きます。その場合に文字が化けてしまうのです。

mb_substr関数はマルチバイト文字に則した文字数の数え方をしてくれるので、文字化けせずに表示されるようになるというわけです。

ご注意下さい

この解決法の場合、プラグインのアップデードを行うとファイルが上書きされてしまいます。
上書きされると、書き加えた変更点が元に戻ってしまうので、もう一度追加し直す必要があります。

幸か不幸かこのプラグインはあまりアップデートはされていないようです。

3件のコメントがあります。

  1. 外国の無料テーマを使っていて、抜粋がうまくいかずに悩んでいました。
    一切抜粋されない、または最後の文字化けという現象です。
    具体的な対処法は違いましたが、こちらで大きなヒントを得て解決しました。
    ありがとうございます!

コメントを残す