WordPressプラグイン「Add Meta Tags」の文字化けを修正する。

2012年05月9日 正午の月齢:18.2  月名:寝待月  潮汐:中潮 月齢:18.2[寝待月] 潮汐:中潮 | 5年前 | 旧暦:2012年閏03月19日 | 先負
WordPress | コメントはありません

この記事を読むのに必要な時間の目安: 2分ぐらい

この記事は5年以上前のものです。情報が古い場合があります。

Add Meta Tagsについて語る前に。

プラグインSociableとWP-OGPを停止しました。Sociableは吐くコードが汚らしい(設定ミスや理解不足だったらごめんなさい)と言う理由で、WP-OGPは「いいね」ボタンがいらないんだったらコレもたぶんいらないよね、という理由です。プラグイン作るんだったらvalidなソースを書いてほしいというのは欲張りなんでしょうか・・・。(同様の理由でWP-PageNaviも停止しています。)

さて、Add Meta Tags。久々にW3C Markup Validation Serviceでチェックしてみると、サイトを読み込めないエラーが発生しました。どうも変な文字コードが入っているらしい。さっそく原因を突き止めると、【WordPress】「Add-Meta-Tags」と「WP-OGP」で文字化けが起こる不具合に行き着きました。

meta[description]は文字数をN文字で丸めているみたいだけど、文字丸めの関数がマルチバイトに対応してなくて、N文字目が日本語の記事はUTF-8 invalidな文字に変換されるけど、N文字目がシングルバイトの文字はUTF-8 validになるから、記事ごとに文字化けしたりしなかったりというメカニズムじゃないかと推測。

ということで参考どおりにプラグインを数ヵ所編集したら、どうやら上手く動いてくれたようです。

strip_tags(substr($posts[0]->post_content, 0, $excerpt_max_len));

strip_tags(mb_substr($posts[0]->post_content, 0, $excerpt_max_len, 'UTF-8'));

unicodeは、いい意味での多くの可能性を持っている代わりに、サロゲートペアなどトラブルの可能性もたくさん秘めている恐るべき文字コードだなぁと再認識。WordPressとプラグインに何もかもお任せ状態のウェブサイト構築ばかりしていますが、今回のようなことがあるとたまにはチェックも必要だなと痛感するのでした。

関係あるかも知れない記事

前の記事・次の記事

前の記事
<<
次の記事
>>

この記事のトラックバックURL

http://susu.cc/2012/05/add-meta-tags.html/trackback

コメントはありません

ごめんなさい、コメントフォームは閉鎖しています。