海外製のテーマによく出てくる 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'); ?>
こういうことですね。
あとがき
どっちかにあわせてちょうよ。