本家版、日本語版 WordPress のマルチバイト文字の取り扱いに関する不具合の累積的修正と強化を行うプラグインです。英語圏で作られた WordPress を日本語環境で正しく動作させるために必要となる機能を網羅していますので、なんらかの対策を行っていない場合は導入をおすすめします。
ダウンロード
WP Multibyte Patch 2.9
バージョン 2.9 は、本家版、日本語版の WordPress 5.2 以上に対応しています。詳細は、リリースノートをご覧ください。その他のバージョンについては、互換性対応表をご覧ください。
主な機能
投稿抜粋
「文字数ベース」抜粋の補助機能を提供します。抜粋の最大文字数と more 文字列を設定ファイルより変更できます。
文字列カウント方式の設定
言語設定が ja の場合、デフォルトで文字列カウント方式の設定を「文字数ベース」に固定します。
検索
検索の際に全角スペースを区切り文字として認識させます。また、検索文字列内の重複するスペースを取り除きます。
メール送信
送信メールのエンコーディングを JIS (ISO-2022-JP) 、UTF-8、自動判別の3つのモードから選ぶことができます。WordPress 本体の実装とは異なり、UTF-8 モードではボディ部も base64 エンコード (7bit) します。本機能はデフォルトではオフになっておりますので、ご利用の際は wpmp-config.php を編集して有効化してください。
トラックバック受信
日本語を含む多くのエンコーディングのデータが破壊される問題を修正します。
ピンバック受信
マルチバイト文字で書かれたページからのピンバック処理機能一式 (エンコーディング検出、変換、トリム) を実装します。
ファイル名サニタイズ
マルチバイトを含むファイル名のファイルがアップロード、またはメール添付された場合にファイル名を md5 に変換します。
フィード XML サニタイズ
フィードで出力される XML 1.0 で不正となる文字の除去と破損したマルチバイト文字の無害化を行い、検証時のエラーを防ぎます。本機能はデフォルトではオフになっておりますので、ご利用の際は wpmp-config.php を編集して有効化してください。
テーマの Web フォント無効化機能
一部のブラウザにおいて日本語表示の不具合が起こる問題の対応として、翻訳ファイルの有無に関わらず、以下テーマの Google フォントの読み込みを任意で無効化できる機能を提供します。
- Twenty Twelve
- Twenty Thirteen
- Twenty Fourteen
- Twenty Fifteen
- Twenty Sixteen
- Twenty Seventeen
管理パネル
- ダッシュボードの「コメント」、「下書き」の抜粋文字数を設定ファイルより変更できます。
- 投稿エディタのリンク挿入機能で、既存コンテンツの内部リンクを検索する際のインクリメンタルサーチを2文字から動作させます。
- 日本語フォントの表示にあわせ、管理パネルのイタリック体を標準に変えます。
BuddyPress 抜粋関数
bp_create_excerpt() でマルチバイト投稿の抜粋が作られない問題を修正します。HTML タグを取り除いた形の文字数ベースの抜粋を生成します。本機能はデフォルトではオフになっておりますので、ご利用の際は wpmp-config.php を編集して有効化してください。
ご注意: Activity の抜粋機能は表示時ではなく Activity データ記録時の実データに適用されます。また、抜粋化されるタイプとされないタイプの投稿があります。これらは BuddyPress の仕様によるものですのでご了承ください。
その他
設定ファイル (wpmp-config.php) から各パッチ機能を個別に有効化・無効化できます。
インストール
通常インストール
- ZIP を解凍し、
wp-multibyte-patch
フォルダを/wp-content/plugins
の中に入れてください。 - 管理パネルのプラグインページで WP Multibyte Patch を有効化してください。
mu-plugins ディレクトリへのインストール
wp-multibyte-patch
フォルダ、wpmp-load.php
ファイルを下記のように配置することでマルチサイトで WP Multibyte Patch を must-use plugin としてロードすることができます。
/wp-content/mu-plugins/wp-multibyte-patch
/wp-content/mu-plugins/wpmp-load.php
アップグレード
wp-multibyte-patch
フォルダの中身を新しいファイルで上書きしてください。
アンインストール
- 管理パネルのプラグインページで WP Multibyte Patch を停止してください。
wp-multibyte-patch
フォルダ、wpmp-config.php
を削除してください。データベースへの設定値の保存、ファイル生成等は行っておりません。
設定ファイル
デフォルトで標準的な設定値が割り当てられるようになっています。これらの設定値を変更する必要がある場合は、wpmp-config-sample-ja.php
を wpmp-config.php
に変名し内容を編集してから下記のように配置してください。(WP_CONTENT_DIR
を変更している場合はその中に置いてください。)
/wp-content/wpmp-config.php
デフォルト設定で問題がない場合はこれらの作業は必要ありません。
共通設定ファイル (wpmp-config.php) のデフォルト値と説明
$wpmp_conf['excerpt_mblength'] = 110;
wp_trim_excerpt() とその下流関数のマルチバイト文字数ベース抜粋時の最大文字数$wpmp_conf['excerpt_more'] = ' [...]';
抜粋末尾に出力される More 文字列$wpmp_conf['comment_excerpt_mblength'] = 40;
get_comment_excerpt() とその下流関数のマルチバイト文字数ベース抜粋時の最大文字数$wpmp_conf['mail_mode'] = 'JIS';
送信メールのエンコーディングのモードを、JIS、UTF-8、auto の中から選択 (日本語環境でのみ利用可)$wpmp_conf['dashboard_recent_drafts_mblength'] = 40;
ダッシュボード最近の下書きウィジェットのマルチバイト文字数ベース抜粋時の最大文字数$wpmp_conf['admin_custom_css_url'] = '';
管理パネルカスタム CSS の URL$wpmp_conf['bp_excerpt_mblength'] = 110;
BuddyPress の bp_create_excerpt() のマルチバイト文字数ベース抜粋時の最大文字数$wpmp_conf['bp_excerpt_more'] = ' [...]';
BuddyPress の bp_create_excerpt() で出力される More 文字列$wpmp_conf['patch_wp_mail'] = false;
メール送信機能のマルチバイトパッチの有効化 (true) 、無効化 (false)$wpmp_conf['patch_incoming_trackback'] = true;
トラックバック受信機能のマルチバイトパッチの有効化 (true) 、無効化 (false)$wpmp_conf['patch_incoming_pingback'] = true;
ピンバック受信機能のマルチバイトパッチの有効化 (true) 、無効化 (false)$wpmp_conf['patch_wp_trim_excerpt'] = true;
投稿抜粋の最大文字数と more 文字列設定機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_wp_trim_words'] = true;
PCRE UTF-8 がサポートされていない環境でも wp_trim_words() で文字数ベース抜粋を行えるようにする機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_get_comment_excerpt'] = true;
get_comment_excerpt() とその下流抜粋関数のマルチバイトパッチの有効化 (true) 、無効化 (false)$wpmp_conf['patch_dashboard_recent_drafts'] = true;
ダッシュボード最近の下書きウィジェット抜粋マルチバイトパッチの有効化 (true) 、無効化 (false)$wpmp_conf['patch_process_search_terms'] = true;
検索機能のマルチバイトパッチの有効化 (true) 、無効化 (false)$wpmp_conf['patch_admin_custom_css'] = true;
管理パネルのカスタム CSS 読込み機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_wplink_js'] = true;
内部リンク検索のインクリメンタルサーチを2文字で動作させる機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_character_count'] = true;
文字列カウント方式の設定を「文字数ベース」に固定する機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_twentytwelve_open_sans_off'] = true;
Twenty Twelve Google フォント無効化機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_twentythirteen_google_fonts_off'] = false;
Twenty Thirteen Google フォント無効化機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_twentyfourteen_google_fonts_off'] = false;
Twenty Fourteen Google フォント無効化機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_twentyfifteen_google_fonts_off'] = false;
Twenty Fifteen Google フォント無効化機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_twentysixteen_google_fonts_off'] = false;
Twenty Sixteen Google フォント無効化機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_twentyseventeen_google_fonts_off'] = false;
Twenty Seventeen Google フォント無効化機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_sanitize_file_name'] = true;
ファイル名サニタイズ機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_sanitize_feed_xml_text'] = false;
フィード XML サニタイズ機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_bp_create_excerpt'] = false;
BuddyPress bp_create_excerpt() の抜粋マルチバイトパッチの有効化 (true) 、無効化 (false)
設定ファイルに記述することで機能が有効となる項目
抜粋の最大文字数と抜粋の more 文字列をリクエストされたページタイプごとに設定することができます。それぞれ下記の書式で設定ファイルに追加してください。
$wpmp_conf['excerpt_mblength.条件分岐タグ名'] = 最大文字数;
$wpmp_conf['excerpt_more.条件分岐タグ名'] = 'more 文字列';
たとえば、検索結果ページに表示する抜粋の最大文字数を 140、サイトのフロントページに表示する抜粋の more 文字列を … にしたい場合は以下のように設定ファイルに記述します。
$wpmp_conf['excerpt_mblength.is_search'] = 140;
$wpmp_conf['excerpt_more.is_front_page'] = '...';
利用可能な条件分岐タグ名とその評価順序は次のとおりです。
is_feed
、is_404
、is_search
、is_tax
、is_front_page
、is_home
、is_attachment
、is_single
、is_page
、is_category
、is_tag
、is_author
、is_date
、is_archive
、is_paged
※ 抜粋の最大文字数は excerpt_mblength フック、抜粋の more 文字列は excerpt_more フックを利用することで、より高度なカスタマイズが可能です。
マルチサイト運用時のブログ別設定ファイル
wpmp-config-blog-{ブログID}.php
という名前の設定ファイルを /wp-content
の中に置くことで、ブログ個別にデフォルト設定および共通設定ファイルの設定を上書きすることができます。
注意事項
システム要件
PHP の mbstring 系関数を使用しています。プラグインを有効化できない場合はこれらがお使いのシステムで利用可能な状態にあるか確認してください。
コンフリクトについて
WordPress ではプラグインやテーマの組み合わせにより機能の競合が起こる場合があります。問題が起きた場合は設定ファイルで該当パッチ機能をオフにして様子をみてください。
バグを見つけたら
まず、問題の原因が本当に WP Multibyte Patch にあるのか確認してください。特に以下、不具合と判断する前によく確認してください。
- 「投稿画面でリンクの挿入ができない」 → 古いバージョンの WP Multibyte Patch を使用している場合、互換性の問題が起こることがあります。お使いの WordPress で利用可能な最新版に更新してください。また、同時に使用しているプラグインやテーマの JavaScript コードにバグがあり、そのエラーが WP Multibyte Patch の wplink.js の実行をブロックしてしまっているケースも報告されています。例: AddQuicktag の JavaScript バグ。JavaScript のコンソールにエラーが出ていないか確認してください。
- 「管理画面アイコンフォントが表示されない」 → WP Multibyte Patch を最新版にし、ブラウザのキャッシュを空にしてからリロードしてください。
確認方法
- テーマをデフォルトのものにして、すべてのプラグインを無効化する。
- WP Multibyte Patch だけ有効化する。
- この時点で問題が再現されない場合は、お使いのテーマ、あるいは、お使いの他のプラグインに原因がある可能性が考えられます。
バグの報告
該当するリリースのエントリーにコメントを残してください。
リリースの度に当プラグインの動作検証を行ってくださっている WordPress 日本語版チームの皆さんに感謝いたします。
プラグインを有効化してからおかしな表示になってしまいました。具体的には左右画面いっぱいに表示されていたサイトが細いサイトになってしまいました。1番下には「サイトに技術的な問題が発生しています。」と表示されています。
WP Multibyte Patch を無効化してみてください。WP Multibyte Patch にはデータベースやファイルの改変・生成を行う機能はありませんので、無効化して改善されない問題であるならば原因は別にあると考えられます。
WP MULTIBYTE PATCHを有効→無効→有効にしたらメニューボタンのリンクがすべてトップページになってしまいました。リンク先は合っているのですが、飛び先はすべてトップページなります
なにかご教授いただければ幸いです。
WP Multibyte Patch を無効化してみてください。WP Multibyte Patch にはデータベースやファイルの改変・生成を行う機能はありませんので、無効化して改善されない問題であるならば原因は別にあると考えられます。
顧客のWordPressサイトのバージョンアップ計画がありプラグインの後継バージョンを調査しています。
「WP Multibyte Patch 1.6.2」がインストール&有効化されているのですが
本プラグイン機能を利用しているか否かが不明です。
WP-CONTENTに設定ファイルは置いてありませんでした。
利用しているかしていないかを確認する方法はないでしょうか。
ご教示ください。
有効化して設定ファイルがないのであれば、上記基本機能はすべて有効化されているはずです。「サイトに有効活用されているか?」という意味の質問だとしたら、それはそのサイトの管理者・運営者のみが判断できることだと思いますのでこちらからは何とも申せません。
返答が遅くなり申し訳ございません。
「有効活用」ではなく「機能を利用しているか?」を知りたくお聞きしました。
現在はローカルに検証環境の用意ができているので、無効にして確認してみます。
Multibyte Patchをインストール後、ダッシュボードからフラグインを有効化しようとすると
重大なエラーを引き起こしたため、プラグインを有効化できませんでした。
と表示されてしまいます。どのように対処すればよいでしょうか
ちなみに
wordpress 6.6.1
PHP 7.4.33
です
詳細なエラーコードが不明なので何とも言えませんが、ダウンロードしたファイル(プラグインや WordPress 本体の構成ファイルのどれか)が壊れているのかもしれません。とりあえず Multibyte Patch を削除してから再インストールしてみてください。