Q. WP Multibyte Patch はもう不要?→そんなことはなかった件|WPのFAQ

元々英語圏のCMSであるWordPressは、日本語を含む所謂「マルチバイト文字」の取り扱いが苦手であることはよく知られています。

《前置き》マルチバイト文字の問題と「WP Multibyte Patch」

このWordPressにおける「マルチバイト文字の問題」を解決するため、長く利用されてきたのがプラグイン「WP Multibyte Patch」。有効化するだけでWPが抱えるマルチバイト文字に関する不具合を包括的に修正する大変ありがたいプラグインで、日本語環境でのWordPress運用にはもはや必須ともいえる存在です。

ただ、WordPress5系よりマルチバイト文字での不具合についてコア側での対応がなされたようで、最大の懸案だった「抜粋(expect)が機能しない」等の問題は一応解決したようです。

そのためか公式サイトからダウンロードできる日本語版パッケージに「WP Multibyte Patch」は同封されなくなりました。

【Q】つまり WP Multibyte Patch はもういらない?

WordPress(ワードプレス)の永遠の課題として存在する「無駄なプラグインは削除せよ!」問題。これに添うならプラグイン WP Multibyte Patch はもう使わなくていい? という話は当然出てくるはずです。ここからは個人的な見解となりますが、

【A】いやー、やっぱり WP Multibyte Patch はいるよね、たぶん

結論からいうと答えは「No」、つまり「必要」かな、という印象です。
まず第一にマルチバイト文字の不具合についてWordPress本体の対応がまだ完全とはいえない点。

特に

  • アップロードしたファイル名が日本語そのまま
  • 検索での全角スペースが文字として認識

は、やはりかなりの問題といえる。ver.5.3.2 時点でもコアでの対応はできていない様子、「WP Multibyte Patch」ならこの辺りの対応も完璧なのでそれだけでも使う価値は十分といえる。

なら今後WP本体側でマルチバイト文字対応が進めば「WP Multibyte Patch」は不要になるか? その話についてもおそらく答えは「No」ではないかと思っている。

一番大きな理由は「アップロードファイル名のサニタイズ」問題。 「WP Multibyte Patch」では md5 で自動変換する機能が提供されているが、WP本体でアップロードファイル名をどう処理するか? は汎用性や中立性の問題から一概に答えをだしにくい。またWP側としては「最低限の処理はやるけどもっときちんと処理したいならプラグインとか使って各自でやってね♪」というスタンスが一番取りやすいだろう。

「WP Multibyte Patch」については今後「マルチバイト文字対応の拡張機能を提供するプラグイン」としてWPとの共存の道を歩むのではないかと推測している。

WP Multibyte Patch には「設定」がない?

話は変わりますが、この「WP Multibyte Patch」、基本「有効化」するだけで問題なく機能します。そのせいか有効化しても管理画面に設定を変更するようなメニューはでてきません。

そのため「WP Multibyte Patch の設定は変更できない」と思っている方も結構いたりします。

まあ、実際運用していると、例えば

  • 短縮される文字数をもっと短くしたい or 長くしたい
  • 短縮された文の最後につく文字をデフォルトの […] から別のものに変更したい

など、それなりに設定変更したい場面が出てくるのもまた人情というもの。

これを実現するために、わざわざ get_the_excerpt() で取得した文字列を mb_strimwidth() したり str_replace() したりしているケースも時々見かけますが、……それもっと簡単にできますよ、WP Multibyte Patch の「設定を変更」するだけで


WP Multibyte Patch の設定を変更する方法

結論からいうと「WP Multibyte Patch」には設定メニューこそありませんが、「設定を変更する」こと自体は可能です。ただ通常のプラグインのように管理画面からの変更、というやり方はできません。では実際のやり方を説明します。

因みにサーバ内のファイルを直接操作する必要がありますので、今回はFTPソフトを利用する前提で話を進めます。

  1. FTPソフトでサーバ内にある WP Multibyte Patch のプラグインフォルダにアクセス
    通常は「(WPインストールフォルダ)/wp-content/plugins/wp-multibyte-patch」というパスになります
  2. この「wp-multibyte-patch」フォルダ内にある「wpmp-config-sample-ja.php」という名前のファイルを一旦ローカルにダウンロード
  3. この「wpmp-config-sample-ja.php」を「wpmp-config.php」という名前にリネーム
  4. この「wpmp-config.php」をWordPressの「wp-content」フォルダの直下にアップロード
    通常は「(WPインストールフォルダ) /wp-content/ wpmp-config.php」という感じで配置します

以上で準備は完了です。実際に設定を変更する場合は、wp-content にアップロードした wpmp-config.php の中身を編集します。
この wpmp-config.php 内には WP Multibyte Patch の設定項目が変数として記述されています。その値を適宜修正することで設定を変更することが可能な仕様となっています。

主な変更方法ですが、

// 投稿抜粋の最大文字数を変更
$wpmp_conf['excerpt_mblength'] = 110; // 初期値は110文字
 ↓
// 最大文字数を80文字に変更
$wpmp_conf['excerpt_mblength'] = 80; // 80文字で短縮される
// 投稿抜粋末尾に追加される文字を変更 
$wpmp_conf['excerpt_more'] = ' […]'; // 初期値は […]  
  ↓ 
// 文字を … だけに変更 
$wpmp_conf['excerpt_more'] = ' …'; // … だけが追加されるようになる

という感じ。わかってしまえば簡単な作業です。

その他色々と設定項目はありますが詳しくは WP Multibyte Patch の公式サイト をご確認ください。項目の追記によって特定のページタイプのみで抜粋文字数や追加文字を変更することもできるようです。


WP Multibyte Patch は今後も不要にはならない、たぶん

Ver.5系よりWordPressの日本語パッケージに WP Multibyte Patch が同封されなくなった理由として

「自動パッケージ化・リリース化のためのシステム要件を満たすため」

というのが公式アナウンスのようでした。

正直「いよいよWP本体をマルチバイト文字に完全対応させる時がきた!」といった気概を感じさせるものではなく、あくまで要件を満たすために最低限の対応をしましたよ、というニュアンスぽい感じです。

元々WordPressで日本語を含めたマルチバイト文字への対応が進まなかった理由として「開発者の多くが英語圏の技術者だったから」という話を聞いたことがあります。
まあ、餅は餅屋、マルチバイト文字はマルチバイト文字圏の技術屋、そういう意味で「WP Multibyte Patch」は今後も日本語環境下のWordPress運用には欠かせないプラグインであり続けるような気がします。