本家版、日本語版 WordPress のマルチバイト文字の取り扱いに関する不具合の累積的修正と強化を行うプラグインです。英語圏で作られた WordPress を日本語環境で正しく動作させるために必要となる機能を網羅していますので、なんらかの対策を行っていない場合は導入をおすすめします。
ダウンロード
WP Multibyte Patch 1.6.4
バージョン 1.6.4 は、本家版、日本語版の WordPress 3.5 以上に対応しています。詳細は、リリースノートをご覧ください。その他のバージョンは対応する日本語版パッケージに同梱されています。
主な機能
投稿抜粋
「文字数ベース」抜粋の補助機能を提供します。抜粋の最大文字数と more 文字列を設定ファイルより変更できます。
文字列カウント方式の設定
言語設定が ja の場合、デフォルトで文字列カウント方式の設定を「文字数ベース」に固定します。
検索
検索の際に全角スペースを区切り文字として認識させます。また、検索文字列内の重複するスペースを取り除きます。
メール送信
送信メールのエンコーディングを JIS (ISO-2022-JP) 、UTF-8、自動判別の3つのモードから選ぶことができます。有効時のデフォルトは JIS (ISO-2022-JP) です。WordPress 本体の実装とは異なり、UTF-8 モードではボディ部も base64 エンコード (7bit) します。
トラックバック受信
日本語を含む多くのエンコーディングのデータが破壊される問題を修正します。
ピンバック受信
マルチバイト文字で書かれたページからのピンバック処理機能一式 (エンコーディング検出、変換、トリム) を実装します。また、一部の UTF-8 文字が破壊される問題を修正します。
ファイル名サニタイズ
マルチバイトを含むファイル名のファイルがアップロード、またはメール添付された場合にファイル名を md5 に変換します。
管理パネル
- ダッシュボードの「最近のコメント」、「最近の下書き」でマルチバイト文字列が正しく抜粋されるようにします。
- 投稿エディターの文字数表示機能を正しく動作させます。
- 既存コンテンツへの内部リンクを検索する際のインクリメンタルサーチを2文字から動作させます。
- 日本語フォントの表示にあわせ、管理パネルのフォントファミリーを sans-serif 系に統一、イタリック体を標準に変えます。
BuddyPress 抜粋関数
bp_create_excerpt() でマルチバイト投稿の抜粋が作られない問題を修正します。HTML タグを取り除いた形の文字数ベースの抜粋を生成します。本機能はデフォルトではオフになっておりますので、ご利用の際は wpmp-config.php を編集して有効化してください。
ご注意: Activity の抜粋機能は表示時ではなく Activity データ記録時の実データに適用されます。また、抜粋化されるタイプとされないタイプの投稿があります。これらは BuddyPress の仕様によるものですのでご了承ください。
Twenty Twelve の Open Sans 対策
Twenty Twelve テーマの Open Sans Web フォントが一部ブラウザにおいて日本語表示の不具合を引き起こす問題の対応として、翻訳ファイルの有無に関わらず当該フォントの無効化を行う機能を提供します。
その他
設定ファイル (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'] = 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_word_count_js'] = true;
投稿エディターの単語数表示を文字数表示に変更する機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_character_count'] = true;
文字列カウント方式の設定を「文字数ベース」に固定する機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_force_twentytwelve_open_sans_off'] = true;
Twenty Twelve Open Sans フォント無効化機能の有効化 (true) 、無効化 (false)$wpmp_conf['patch_sanitize_file_name'] = true;
ファイル名サニタイズ機能の有効化 (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 ではプラグインやテーマの組み合わせにより機能の競合が起こる場合があります。問題が起きた場合は設定ファイルで該当パッチ機能をオフにして様子をみてください。
バグを見つけたら
該当するリリースのエントリーにコメントを残してください。
リリースの度に当プラグインの動作検証を行ってくださっている WordPress 日本語版チームの皆さんに感謝いたします。
Pingback: WordPressプラグイン | カメラタイムBlog
Pingback: Wordpressに最初にインストールするべきプラグイン | Wordpress奮闘記
Pingback: WP Multibyte Patch を有効にした。 | Test environmental - PHP