web-dev-qa-db-ja.com

The_title、the_excerpt、the_contentのようなワードプレス関数をエスケープする必要があります

私はコードを見ましたが、the_titlethe_contentthe_excerptetcのような関数からのエスケープは見られませんでした。私はそれを正しく読んでいないかもしれません。テーマ開発では、これらの機能をエスケープする必要がありますか。

esc_html ( the_title () )

編集:上記のコードの下の答えで指摘されているように関係なく間違っている - コードはesc_html ( get_the_title () )を読んでいる必要があります

14
byronyasgur

エスケープは完全にあなたが関数を使用している文脈に依存します。 <h1>タグの中に表示するのに安全なものは、必ずしも入力フィールドのvalue属性のために表示するのに安全であるというわけではなく、それでもhref属性値として安全であるというわけではありません。

要するに - あなたがそれを出力するようにあなた自身で消毒を行いなさい。 the_title ()またはget_the_title ()の場合は、WordPressが次の機能を適用するため、esc_htmlは必要ありません。

注: the_titleはタイトルを表示します - そのためesc_html ( the_title () )は機能しません。同様に、the_contentはコンテンツを出力します(いずれの場合も、コンテンツにHTMLが表示されるはずです)。

14
Stephen Harris

はい、いいえ - これらの関数のHTMLを出力するかどうかによって異なります。たとえばthe_content()をエスケープし、それに<div>タグが含まれている場合、そのタグは実際には代わりに&lt;div&gt;としてページに出力されます。

ところで、これらの関数の出力をエスケープするのであれば、それらの関数が直接その出力をエコーするので、それらの "get_"と同等のもの(例えばget_the_content())を使いたいでしょう。

6
Joseph Leedy

このような関数を書いて the_title filterにフックするだけです。

function my_escape_title( $title ){
    return esc_html( $title );
}
add_filter( 'the_title', 'my_escape_title' );
0
Vilius