WordPress 3.4 の i18n 関連機能の強化にともない、WP Multibyte Patch のコードにも多くの変更がありました。以下、重要な変更点について説明します。
投稿抜粋機能の変更
WordPress 3.4 で遂に本体に 文字数ベースの投稿抜粋機能が実装されました。これにともない WP Multibyte Patch 1.6 から投稿抜粋は本体の機能を利用して行われるようになりました。互換性のため下記の機能は残してありますので、現在ご使用の設定を変える必要はありません。
互換性のために残した機能:
- 投稿抜粋の最大文字数設定機能、ならびに、そのデフォルト文字数
- 投稿抜粋末尾に出力される more 文字列設定機能、ならびに、そのデフォルト文字列
- 上記に条件分岐タグ名を指定できる機能
- excerpt_mblength フック
これらは本体の 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;
1.6.1 の主な変更点
- 言語設定が ja の場合、翻訳ファイルの設定に関わらず常に「文字数ベース」の文字列カウント方式となるようデフォルト値を設定した。
- テーマカスタマイザーでも admin.css の設定が反映されるようにした。
- admin.css の font-family を変更した。
1.6 の主な変更点
- ダッシュボード「最近の下書き」で日本語抜粋が正しく行われない、また文字が破壊される本体の問題に対応した。
- 投稿抜粋機能は WordPress 3.4 本体の実装を利用するようにし、内部の wp_trim_excerpt() 代替関数を廃止した。(関連する独自機能、デフォルト設定値などは互換性のために残した。)
- 投稿エディター文字数表示機能を WordPress 3.4 の「文字列カウント方式の設定」に対応させた。
- WordPress 3.4 の「文字列カウント方式の設定」を任意ですべての環境で「文字数ベース」に固定する機能を追加した。
- 動作要件チェック後 WP Multibyte Patch を無効化する際のエラー表示を動作をブロックしない方法に改善した。
- 設定サンプルファイルの名前を wpmp-config-sample-ja.php に変更、日本語の説明を加えた。
- ja 以外の言語設定で使用した場合、抜粋など一部の限定した機能を PHP の mbstring 拡張なしでも利用できるようにした。
- 関数 is_almost_ascii()、設定変数 ascii_threshold、excerpt_length、comment_excerpt_length を廃止した。
- 内部リンクインクリメンタルサーチ機能のコンパチビリティ修正を行った。
以上、不具合がありましたらこの記事にコメントしてください。
いつも丁寧なテストと良い意見をくださる Naoko McCracken さん、日本語版チームのみなさんに感謝します!