書籍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()
です。
クライアントワークではこれらの関数を使う頻度は少ないかもしれませんが、公開されているテーマやプラグインなど見かけることは結構あるでしょう。
更新日:

