WordPress環境で「なぜか文字数が合わない、揃わない」なんて経験はありませんか?これは英語ベースで作られている環境の文字(シングルバイト)と日本語(ダブルバイト)の文字の違いから来るものです。この文字の問題を解決してくれるプラグインがWP Multibyte Patchです。日本語環境では必須のプラグインになります。カスタマイズの機能もありますので簡単ですがご紹介します。
目次
WP Multibyte Patchとは?
一般的にあらゆるソフトウェアでシングルバイト前提で作られたソフトウェアはダブルバイト(日本語や中国語など)の環境で稼働させると想定した通りに動かないケースが多々あります。WordPressも例外ではありません。
WP Multibyte Patchはシングルバイト/マルチバイトの問題解決を中心に日本環境に合わせた機能改善の機能があります。WP Multibyte Patchを適用するだけで、多くの問題から解放される必須のプラグインということができます。
WP Multibyte Patchのインストール/有効化
おそらくは既にWP Multibyte Patchがインストールされていると思います。まずは以下を確認します。
ダッシュボード>プラグイン>インストール済みプラグイン
存在する場合は、”有効化”をクリックすることで、WP Multibyte Patchプラグインの有効化は完了になります。
もしも、存在しない場合はWordPressのプラグインとしてインストールからします。
ダッシュボード>プラグイン>新規追加
”WP Multibyte Patch”でキーワード検索をかけると見つかります。
見つかったら右上の”インストール”ボタンを押下、インストールが終わったら”有効化”ボタンを押下で終わりです。
ここで確認しているWP Multibyte Patchバージョンは2.8.1です。WordPressは4.8.4で稼働しています。(更新 2017/12/08)
WP Multibyte Patchによるカスタマイズ
WP Multibyte Patchはインストール/有効化だけで機能するプラグインですが、環境をカスタマイズする機能を持っています。
私の場合は、下画像の赤四角の枠の部分がもったいないので文字数増やしたかったのです。
この抜粋の文字数は、”the_excerpt()”を使っています。the_excerpt()は”抜粋を表示する”ための命令で、デフォルトでは110文字に設定されています。
続いて手順に入りますが、カスタマイズしない場合は以下の手順をやる必要は全くありません。
ファイルのコピー/名前の変更
WP Multibyte Patchの設定サンプルファイルをコピーして、名前を変更します。
<導入ディレクトリ>/wp-content/plugins/wp-multibyte-patch/wpmp-config-sample-ja.php
から、以下のディレクトリ&名前です。
<導入ディレクトリ>/wp-content/wpmp-config.php
wpmp-config.phpの編集
以下の行の数字を変更します。
$wpmp_conf[‘excerpt_mblength’] = 110;
例えば、以下のようにです。
$wpmp_conf[‘excerpt_mblength’] = 130;
これで変更されます。
良い感じになりましたよね?
他の設定値
私は抜粋の文字数の変更をしたかったのでexcerpt_mblengthを変更していますが、他にも設定値はあります。
設定値はWP Multibyte Patchのヘルプを見てていただくのが良いかと思います。抜粋したものを表にして以下に貼ります。
表1の値設定も表2の値で”true”を指定していないと意味がない場合がありますのでご注意ください。
表1:値設定系
設定項目 (= デフォルト値) | 説明 |
$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 文字列 |
※内容はWP Multibyte Patchの詳細より抜粋したもの
表2:スイッチ系
設定項目 (= デフォルト値) | 説明 |
$wpmp_conf[‘patch_wp_mail’] = true; | メール送信機能のマルチバイトパッチの有効化 (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_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) |
※内容はWP Multibyte Patchの詳細より抜粋したもの
※Googleフォント無効化機能の項目は省略
本当は変更できなかった
実は私の場合、上記手順で変更できませんでした。
端的に言うと、設定しても変更が全く反映されませんでした。最初、自分のしている作業に問題があるのかと思い、ずいぶんと考えました。
私の使っているテーマではfunctions.phpにexcerptの長さを変更する記載がすでにあったのことが原因でした。
こんなことに後から気づくとは・・・。このカスタマイズをする前に、functions.phpなどで同じようなことをしていないかを確認する必要があるということです。
※上の画像は、テーマのfunctions.phpの記載を変更して直した後の画像です。
もちろん、前述の手順は正しいのですが、使用しているテーマによっては上書きされてしまうということです。
まとめ
私みたいなことは無いと思いますが、ぼーっとしてるとこうなるという例ということで、公開してみました。
- 日本語環境では必須のプラグインなので必ず有効化する
- wpmp-config.phpを使用した設定をする場合は、事前にテーマを確認する
日本語環境でWP Multibyte Patchを使わないという選択肢はあまり無いと思いますので、有効化だけは必ずするようにしましょう。