LoginSignup
12
8

More than 5 years have passed since last update.

WordPress の esc_html_e() と esc_html() が紛らわしかったのでメモ

Posted at

海外製のテーマによく出てくる esc_html_e()

WordPressで海外製のテーマをいじっていると esc_html_e() という関数がいっぱい出てくる。

esc_html ということはHTMLの何かしらのエスケープだろうし、_e ということは何かしらの翻訳なんだろうけど…と思いつつほったらかしていたので、改めて Codex をチェック。

Function Reference/esc html e « WordPress Codex

うん、まあそのままか。

esc_html_e($text, $domain);

のように、引数にエスケープしたいテキストとドメイン名(翻訳ファイルのありかを指す…らしい)を指定すればよいとのこと。

日本人なら esc_html() やろが!

…いや日本人に限らず、ですが。通常のクライアントワークではテーマファイルを多言語化することなどまず無いので、esc_html() で十分ですよね。

esc_html($text);

引数にテキストを指定するだけ。わかりやすい。

esc_html() と esc_html_e() の決定的な違い

というわけで、テーマファイル内の esc_html_e()esc_html() に書き換えていたところ、「あれ?テキストが表示されない…」という事態に。

それもそのはず、 esc_html_e() は関数内に echo を含んでいるので「記述するだけでテキストを出力する」のですが、 esc_html() はただ値を取って来るだけなので、 echo で出力してあげねばなりません。

■ esc_html_e() を用いた出力
<?php esc_html_e('Pen-pineapple-apple-pen', 'picotaro'); ?>

■ esc_html() を用いた出力
<?php echo esc_html('Pen-pineapple-apple-pen'); ?>

こういうことですね。

あとがき

どっちかにあわせてちょうよ。

12
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
8