the_title、the_excerpt、the_contentなどのワードプレス機能をエスケープする必要があります


15

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

esc_html ( the_title () )

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


いいえ、これらの機能はすでにサニタイズされているため、サニタイズする必要はありません。the_content入力するTinyMCEエディターからHTMLを出力する場合を除きます。これは、たとえばユーザーがフロントエンドで作成したフォーム入力またはデータ用に予約されています。
アダム

回答:


15

エスケープは、関数を使用しているコンテキストに完全に依存します。<h1>タグ内に表示するのに安全なvalueものは、入力フィールドの属性に対して表示するのが必ずしも安全ではなく、href属性値としても必ずしも安全ではありません。

要するに、出力するときに自分でサニタイズを実行します。けれどもの場合the_title ()get_the_title ()esc_htmlワードプレスは、以下の機能が適用されているので、必要ありません。

注: the_titleタイトルを印刷するため、機能しesc_html ( the_title () )ません。同様にthe_content、コンテンツを印刷します(いずれにせよ、コンテンツにはHTMLが表示されるはずです)。


おっとばかげた...はい、もちろんesc_html(the_title())は動作しません。ご回答有難うございます。
-Byronyasgur

4
関連:出力後のタイトルにHTMLの中に属性、使用the_title_attribute()
チップ・ベネット

6

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

ところで、これらの関数の出力をエスケープする場合、これらの関数get_the_content()が出力を直接エコーするため、「get_」に相当するもの(例:)を使用する必要があります。


0

次のような関数を単純に記述し、the_titleフィルターにフックできます。

function my_escape_title( $title ){
    return esc_html( $title );
}
add_filter( 'the_title', 'my_escape_title' );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.