この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
メディアファイルの仕様を確認しているときにマルチバイト問題に遭遇した。具体的にはファイルメイにマルチバイト文字を使うとメディアファイルが削除できなくなるというもの。ゴミが残るだけなのでそれほど心配はないと思うがマルチバイトに対応していないという不安が残った。調べてみるとWP Multibyte Patchでこの問題が解決できるようであった。このプラグインの概要とインストール手順を紹介する。
操作画面などは2019年4月のもので最新の情報と異なる可能性があります。ご了承ください。
- WordPress バージョン 5.1.1–ja
- WP Multibyte Patch バージョン 2.8.2
目次
WP Multibyte Patchとは
ざっくり言うとWordPressの日本語(マルチバイト文字)問題を解決するためのプラグインである。個人的には強くおすすめする。
本家版、日本語版 WordPress のマルチバイト文字の取り扱いに関する不具合の累積的修正と強化を行うプラグインです。英語圏で作られた WordPress を日本語環境で正しく動作させるために必要となる機能を網羅していますので、なんらかの対策を行っていない場合は導入をおすすめします。
引用:WP Multibyte Patch – EastCoder;
なぜ必要なのか
なんでおすすめするかと言うと発端はこの記事。
ワードプレスの画像自動生成仕様を確認~WordPressは画像追加時に縮小版を作成する~
WordPressでメディアファイルが自動生成される仕様を確認していたと時にマルチバイト文字問題が発生した。事象は日本語名を含む画像ファイルをアップロードした後に削除できなくなってしまうもの。具体的にはDBからは削除されるが物理ファイルが削除されずに残ってしまいゴミが残ってしまう。物理ファイルの削除処理がマルチバイトに対応していないのが原因である。
ファイル名サニタイズ
マルチバイトを含むファイル名のファイルがアップロード、またはメール添付された場合にファイル名を md5 に変換します。
引用:WP Multibyte Patch – EastCoder;
WP Multibyte Patchを有効化すればマルチバイト文字を英数字に変換してくれるのでこの問題は解決される。だが何が起こるかわからないので基本的には画像ファイル名に日本語名は使わない方がいい。
プラグインではこの他にもマルチバイト文字に関する問題をサポートしている。文字化けなどに悩まされ続けてきた元SEとしては必須プラグインだと思っている。レビュー評価も高いので入れない理由が見つからない。
機能詳細
WP Multibyte Patchの機能をざっくり紹介する。
前提知識としてマルチバイト文字問題について超簡単に説明する。
英語圏などでは文字をASCIIコードを使って1文字1バイトで表現している。1バイトって何って話だが、システム内でデータを取り扱う単位と思ってもらっていい。ビットと言う概念もあるがコンピューターで扱うデータの最小単位がバイト。
日本語などは1文字を2バイト以上で表現する。文字コードによっては1文字4バイトになることも。すべて1文字1バイトならすごいシンプルなシステムになるが1文字が1~6バイトと可変となると複雑になってくる。
マルチバイト文字に対応していないシステムにマルチバイト文字を入力するとデータが壊れたりと問題が発生する。これが予期せぬエラーを引き起こしてシステムがダウンするなんて恐ろしいこともある。
投稿抜粋
この記事を書くまでWordPressの抜粋機能を知らなかった。サムネとかで記事の一部を抜粋する機能らしい。抜粋の代わりに記事の要約を入れることも可能。記事から文字を引っ張るときに日本語(マルチバイト)での文字数を設定できる。抜粋はGoogleの検索結果につかわれるようなので思ったよりも重要。ここでは設定ファイルを使って最大文字数を指定できる。
「文字数ベース」抜粋の補助機能を提供します。抜粋の最大文字数と more 文字列を設定ファイルより変更できます。
引用:WP Multibyte Patch – EastCoder;
文字列カウント方式の設定
文字列のカウントを文字数ベースにする。このプラグインを入れなくてもエディターの文字数は正しく表示されるのでどこで効いてくるのかは不明。
言語設定が ja の場合、デフォルトで文字列カウント方式の設定を「文字数ベース」に固定します。
引用:WP Multibyte Patch – EastCoder;
検索
システム的にはよくある空白処理である。ユーザビリティを考えたらこの実装があるとありがたい。
検索の際に全角スペースを区切り文字として認識させます。また、検索文字列内の重複するスペースを取り除きます。
引用:WP Multibyte Patch – EastCoder;
メール送信
内部の細かい仕組みまではわからないがメール送信時の文字コード問題を解決してくれる。古い情報だがContact Form 7での文字化け対応にこのプラグインが紹介されていた。メール送信機能などでマルチバイド対応していれば問題ないと思うがどうなっているかわからない。メディア管理もマルチバイト対応していなかったので入れておいた方が無難だろう。
送信メールのエンコーディングを JIS (ISO-2022-JP) 、UTF-8、自動判別の3つのモードから選ぶことができます。有効時のデフォルトは JIS (ISO-2022-JP) です。WordPress 本体の実装とは異なり、UTF-8 モードではボディ部も base64 エンコード (7bit) します。
引用:WP Multibyte Patch – EastCoder;
トラックバック受信
トラックバックとか使ったことないのでコメントを控える。
日本語を含む多くのエンコーディングのデータが破壊される問題を修正します。
引用:WP Multibyte Patch – EastCoder;
ピンバック受信
ピンバック正しく動作しないと困るので必須。
マルチバイト文字で書かれたページからのピンバック処理機能一式 (エンコーディング検出、変換、トリム) を実装します。
引用:WP Multibyte Patch – EastCoder;
ファイル名サニタイズ
これは前述した通りすでにメディアファイルの削除で問題が発生しているため必須の機能。ここで問題があるってことは他の機能も怪しいのでやっぱりこのプラグインは入れておきたい。
マルチバイトを含むファイル名のファイルがアップロード、またはメール添付された場合にファイル名を md5 に変換します。
引用:WP Multibyte Patch – EastCoder;
フィード XML サニタイズ
フィードで出力される XMLのエラーをとる機能でデフォルト無効になっている。説明では破損とか無害化とか怖いことが書いてあるが無効で大丈夫だろうか?頻繁に起きる問題なら大騒ぎになっているはずなのでとりあえず無効でよさそう。
フィードで出力される XML 1.0 で不正となる文字の除去と破損したマルチバイト文字の無害化を行い、検証時のエラーを防ぎます。本機能はデフォルトではオフになっておりますので、ご利用の際は wpmp-config.php を編集して有効化してください。
引用:WP Multibyte Patch – EastCoder;
テーマの WEB フォント無効化機能
Twentyシリーズのテーマで有効な機能。とりあえずこのテーマ使っていなければ問題なし。
一部のブラウザにおいて日本語表示の不具合が起こる問題の対応として、翻訳ファイルの有無に関わらず、以下テーマの Google フォントの読み込みを任意で無効化できる機能を提供します。
引用:WP Multibyte Patch – EastCoder;
管理パネル
やはりWordPressは細かいところでマルチバイト文字対応ができてないみたい。
ダッシュボードの「コメント」、「下書き」でマルチバイト文字列が正しく抜粋されるようにします。
投稿エディタのリンク挿入機能で、既存コンテンツの内部リンクを検索する際のインクリメンタルサーチを2文字から動作させます。
日本語フォントの表示にあわせ、管理パネルのイタリック体を標準に変えます。
引用:WP Multibyte Patch – EastCoder;
BUDDYPRESS 抜粋関数
プラグインのBuddyPressを使うときに影響があるよう。使っている人は注意したほうがよい。
参考
BuddyPress 配信メールの文字化け 対処法(wordpress プラグイン)HCZ BLOG
bp_create_excerpt() でマルチバイト投稿の抜粋が作られない問題を修正します。HTML タグを取り除いた形の文字数ベースの抜粋を生成します。本機能はデフォルトではオフになっておりますので、ご利用の際は wpmp-config.php を編集して有効化してください。
引用:WP Multibyte Patch – EastCoder;
インストール手順
メニューのプラグインから「新規作成」をクリック。
キーワードに「WP Multibyte Patch」を入力。WP Multibyte Patchの「今すぐインストール」ボタンをクリック。
「有効化」ボタンをクリック。
画面での設定項目はない。基本はデフォルトで問題ないのでインストールとセットアップはこれで完了。
まとめ
今回マルチバイト文字のメディアファイルが正しく削除できない問題でこのプラグインを入れることになった。調べてみるとこれ以外にもマルチバイト問題があるようだった。WordPressはマルチバイト文字に完全に対応していないためどんな問題が起きるかわからない。レビュー評価も高く弊害も内容なのでWP Multibyte Patchは入れておいた方がよさそうだ。