書籍p.122では、esc_html()、esc_attr()、esc_url()を紹介しています。
WordPressでは、ローカライゼーション(多言語)機能があります。エスケープ処理とローカライゼーション処理を組み合わせた関数も用意されています。
多言語対応
多言語対応についてざっと解説します。多言語対応の関数の代表例は __()
です。
__()関数
__($string, $domain);
- $string は、[文字列]で、英語で書かれた文字列が入ります。
- $domain は、[文字列]で、ローカライゼーションするドメイン(テーマ名やプラグイン名など)が入ります。未指定の場合は ‘default’
たとえば wp-admin/edit-comment.php に以下のような記述がありますが、
$title = __( 'Comments' );
元の文字列は「Comments」ですが、__()
関数で処理することにより別の言語に翻訳できます。管理画面で言語設定を日本語にすれば、「コメント」と表示されるわけです。
_e()関数と_x()関数
__()
関数の仲間が_e()
関数と_x()
関数です。
_e($string, $domain);
- $string は、[文字列]で、英語で書かれた文字列が入ります。
- $domain は、[文字列]で、ローカライゼーションするドメイン(テーマ名やプラグイン名など)が入ります。未指定の場合は ‘default’
_e()
関数は、__()
関数と同様にローカライゼーションをします。 __()
は値を返すのに対して、 _e()
は echo する、という違いがあります。
_x($string, $context, $domain);
- $string は、[文字列]で、英語で書かれた文字列が入ります。
- $context は、[文字列]で、文字列が使われている文脈を示しています。
- $domain は、[文字列]で、ローカライゼーションするドメイン(テーマ名やプラグイン名など)が入ります。未指定の場合は ‘default’
$context は、実際の使い方で示すと、wp-admin/includes/class-custom-image-header.php に
_x( 'Default: %s', 'color' )
のように記述されています。「Default: %s」というメッセージを多言語対応するのですが、%sに、色が入ることが文脈として示されています。
日本語への翻訳は wp-content/languages/admin-ja.po をみると「デフォルト: %s」となっていて、特にこの文脈のメリットはないかもしれませんが、言語によっては、「Default Color: %s」のように表現するほうが自然なケースもあるかもしれませんね。
esc_html()、esc_attr()との組み合わせ
esc_html()
、esc_attr()
は、__()
、_e()
、_x()
と組み合わせた関数が用意されています。
esc_html()
は
esc_html()
と__()
→esc_html__()
esc_html()
と_e()
→esc_html_e()
esc_html()
と_x()
→esc_html_x()
esc_attr()
は
esc_attr()
と__()
→esc_attr__()
esc_attr()
と_e()
→esc_attr_e()
esc_attr()
と_x()
→esc_attr_x()
です。
クライアントワークではこれらの関数を使う頻度は少ないかもしれませんが、公開されているテーマやプラグインなど見かけることは結構あるでしょう。
更新日: