WordPressプラグイン「Add Meta Tags」の文字化けを修正する。
2012年05月09日 18時01分 月齢:18.2[寝待月] 潮汐:中潮
(最終更新日:2019年09月17日)
13年前に投稿 | WordPress | コメントはありません
2分ぐらいで読めます。
この記事は情報が古い場合があります。
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とプラグインに何もかもお任せ状態のウェブサイト構築ばかりしていますが、今回のようなことがあるとたまにはチェックも必要だなと痛感するのでした。
古い記事・新しい記事
- 古い記事 [2012年05月08日]
- ← WordPressプラグイン「qTranslate」で多言語化してみた。
- 新しい記事 [2012年09月20日]
- → WordPressに、human_time_diffで投稿からの日数を表示する。
他にも「WordPress」カテゴリの記事はいかがですか。
- WordPress2.8.3にしておきました。
- WordPress2.9.2にしました。
- WordPressプラグイン wp-koyomiの実装。
- テーマをフルモデルチェンジしてみた。
- WordPressで半角カナ・全角英数字を変換するのを、functions.phpに書く。
- WordPressで記事の中にPHPのコードを書くと、下書き保存もプレビューもできずに501エラー。
- リンク部分にマウスカーソルを乗せると動くようにしてみた。
- TinyMCEビジュアルエディタのフォントを明朝体から好きなフォントへ変更する。
- WordPress Popular Postsを再び実装してみた。ウィジェットやショートコードを使わずに。
- 「左が過去で右が未来」、ブログ記事における「前」「次」が時間軸と合っていないので整理してみる。