WordPress 3.5 のコンパチビリティ修正を含んだ WP Multibyte Patch 1.6.4 をリリースしました。
1.6.4 の主な変更点
- ピンバック受信時に一部の UTF-8 文字が破壊されることにより送信元が「匿名」となってしまう本体の問題に対応した。
- wplink.js のコンパチビリティ修正を行い、ローディング画像が正しく表示されるようになった。
WordPress 3.5 のコンパチビリティ修正を含んだ WP Multibyte Patch 1.6.4 をリリースしました。
今回のリリースはフォント関連の機能追加が中心です。
Twenty Twelve テーマの Open Sans Web フォントが、一部ブラウザにおいて日本語表示の不具合を引き起こす問題の対応として、当該フォントの読込みを無効化する機能を組み込みました。なお、こちらの Twenty Twelve 日本語翻訳ファイルを ja.mo に変名し
/wp-content/themes/twentytwelve/languages/ja.mo
に置くことでも、フォントの無効化を行えますが、今回の組み込み機能により翻訳ファイルがない状態でも日本語環境ではデフォルトで Twenty Twelve の Open Sans Web フォントが読み込まれなくなります。
WP Multibyte Patch 有効時に管理パネルでデフォルトで読み込まれる独自 CSS ファイル(admin.css) の font-family 設定が一部で不評であったため、以下変更と機能追加を行いました。
CSS ファイル指定の例:
$wpmp_conf['admin_custom_css_url'] = '/wp-content/wpmp-admin.css';
管理画面以外を英語表示にするカスタマイズ方法として wp-config.php に以下のような記述を行っている例を見かけます。
if ( defined('WP_ADMIN') )
define('WPLANG', 'ja');
else
define('WPLANG', 'en_US');
上記のコード自体に問題があるわけではありませんが、管理画面以外で「日本語翻訳表示を行わせないだけ」のつもりでこのような設定を行うと予期せぬ2つの問題を招くことになります。
WordPress 3.4 本体の文字数ベース投稿抜粋機能が PCRE(Perl 互換正規表現) UTF-8 をサポートしていない一部の環境において正常に動作しない問題の対応を行いました。WP Multibyte Patch 1.6.1 で投稿抜粋に問題があった方は今回のアップデートを試してみてください。
PCRE UTF-8 に関する補足情報:
お使いの環境で PCRE UTF-8 がサポートされているかどうかは、以下のコードを実行して確認することができます。
echo @preg_match('/^.$/u', 'ñ') ? 'PCRE UTF-8' : 'no PCRE UTF-8';
現在 WordPress では動作要件に PCRE の UTF-8 サポートをあげていませんが、本体コード内で利用されている箇所は複数ありますので、可能であれば機能がサポートされているサーバーをお使いになった方がよいでしょう。
PCRE UTF-8 がサポートされていない環境で、文字数ベースの投稿抜粋が正しく行われない本体の問題に対応した。
WordPress 3.4 の i18n 関連機能の強化にともない、WP Multibyte Patch のコードにも多くの変更がありました。以下、重要な変更点について説明します。
WordPress 3.4 で遂に本体に 文字数ベースの投稿抜粋機能が実装されました。これにともない WP Multibyte Patch 1.6 から投稿抜粋は本体の機能を利用して行われるようになりました。互換性のため下記の機能は残してありますので、現在ご使用の設定を変える必要はありません。
互換性のために残した機能:
これらは本体の excerpt_length フック(priority 99)、また excerpt_more フック(priority 9)を通して実行される単純な仕組みです。
WordPress 3.4 では「単語数ベース」、「文字数ベース」どちらの方式で、文字列の長さのカウントを行うか、システム全体で共有する設定値を翻訳ファイルの中に保持するようになりました。WordPress 日本語版では、デフォルトで「文字数ベース」を示す値 ‘characters’ が設定されています。具体的には以下のように値を呼び出して処理を行います。
if ( 'characters' == _x( 'words', 'word count: words or characters?' ) ) // 文字数ベースの処理
現在 WordPress 本体では、投稿抜粋を行う wp_trim_words() 関数、投稿エディターの文字数表示機能 word-count.js の2箇所でこの設定値が利用されていますが、これらはどちらも WP Multibyte Patch の機能と深く関係しています。
翻訳ファイルの中に値が保持されることの弊害として、何らかの理由で翻訳ファイルが読み込まれなかったり、ファイルが上書きされてしまうと、システムの挙動が変わってしまうことがあげられます。WP Multibyte Patch 1.6.1 では、言語設定が ja の場合、翻訳ファイルの設定に関わらず常に「文字数ベース」でシステムが動くようにデフォルトで設定されます。翻訳ファイルの設定を優先したい場合は wpmp-config.php に以下のように記述してください。
$wpmp_conf['patch_force_character_count'] = false;
以上、不具合がありましたらこの記事にコメントしてください。
いつも丁寧なテストと良い意見をくださる Naoko McCracken さん、日本語版チームのみなさんに感謝します!