回答:
esc_html()
文字列をエスケープして、HTMLとして解析されないようにします。のような文字<
は<
、たとえばに変換されます。これはリーダーには同じように見えますが、出力される値が<script>
ブラウザーによって実際のスクリプトタグとして解釈されないことを意味します。
出力される値にHTMLが含まれないようにする場合は常に、この関数を使用します。
esc_attr()
class=""
たとえば、HTML属性で安全に使用できるように文字列をエスケープします。これにより、値がHTML属性から抜け出すことが防止されます。たとえば、値が"><script>alert();</script>
HTML属性で出力しようとした場合、現在のHTMLタグを閉じてスクリプトタグを開きます。これは安全ではありません。値をエスケープすると、HTML属性とタグを閉じて安全でないHTMLを出力できなくなります。
この属性は、HTML属性内の値を出力するときに使用します。
esc_url()
文字列をエスケープして、それが有効なURLであることを確認します。
href=""
or src=""
属性内の値を出力するときにこの関数を使用します。
esc_textarea()
<textarea>
要素で安全に使用できるように値をエスケープします。この関数で値をエスケープすることにより、内部で出力される値が要素を<textarea<
閉じて<textarea>
独自のHTMLを出力するのを防ぎます。
<textarea>
要素内の値を出力するときにこの関数を使用します。
esc_html()
そしてesc_attr()
また、で終わるのバージョンを持っている__()
、_e()
と_x()
。これらは翻訳可能な文字列を出力するためのものです。
WordPressは、機能を持ち__()
、_e()
かつ_x()
、翻訳可能なテキストを出力します。__()
戻り翻訳可能な文字列、_e()
エコー A翻訳可能な文字列を、そして_x()
与えられた文脈と翻訳可能文字列を返します。あなたはおそらくそれらを以前に見たことがあるでしょう。
安全な値が含まれている翻訳ファイルを必ずしも信頼できるとは限らないため、翻訳可能な文字列を出力するときにこれらの関数を使用すると、出力されている文字列が上記と同じ問題を引き起こすことはありません。
翻訳可能な文字列を出力するときにこれらの関数を使用します。
esc_html
とesc_attr
:(彼らは異なる未使用のフィルタを有する)、同じコードが使用されるwordpress.stackexchange.com/questions/264698/...
esc_html
たとえば<p>
タグの間など、html内で使用されます
<p><?php echo esc_html( $some_variable ); ?></p>
esc_attr
次のようにhtmlタグの属性値をエスケープするために使用されます。
<p my-attribute="<?php echo esc_attr( $some_variable ); ?>"></p>
_e
最後に適用すると、テキストドメインで使用し、自動的にエコーされます。例:
<p><?php esc_html_e( 'some-text', 'text-domain' ); ?></p>
<p my-attribute="<?php esc_attr_e( 'some-text', 'text-domain' ); ?>"></p>
他に_e
も存在する__
と同じんどの_e
あなたが変数に格納することができますので、しかし、doesntのは、それをエコー。
_e
エコーするためだけではなく、ローカリゼーションのためです。したがって、文字列が関数に渡される場合にのみ使用し、テキストドメインを含める必要があります。あなたの最後の例はそれを誤用しています。