このサイトではアフィリエイト広告(Amazonアソシエイトを含む)を利用しています。

esc_html()とesc_attr()にローカライゼーション対応を追加した関数

書籍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()

です。

クライアントワークではこれらの関数を使う頻度は少ないかもしれませんが、公開されているテーマやプラグインなど見かけることは結構あるでしょう。

更新日:

↑このページへのリンク

フリーランスの営業力アップに最適!ホームページを営業マンにする自動見積もりフォーム「マイ見積