【WordPress】esc_attrとesc_url  どっちを使うの?

【WordPress】esc_attrとesc_url  どっちを使うの?

WordPressに限らず、何かしらの文字列をPHPで出力する場合に、その文字列をエスケープ処理することは定番です。
その目的はXSS(クロスサイトスクリプティング)のようなセキュリティ情弱性をついた攻撃から身を守るためです。

でもこれ、どう使い分けるのか、って話になります。

出力する文字列がURLかそうでないか

WordPressのエスケープ処理では、出力される文字列に実体参照に適用します。
実体参照とは、HTMLでは文字列ではなくマークアップの文字列として認識されてします文字列(<とか>とか&とか”とか)を文字列としてブラウザに認識させる方法のことです。

esc_attrの「attr」は属性の意味なので、HTMLタグの属性内でechoするならesc_attrを使おう、と私は短絡的に判断していました。

使い方としては、「URLを出力するならesc_urlで、POSTやGET送信された文字列を出力するならesc_attr」を使います。

esc_urlはURLの出力時に使います。
属性に文字列を出力するからといってesc_attrではありません。

esc_attrは例にあるようにPOST送信やGET送信した値を出力するときに使います。
ユーザーが入力した文字列内にXSSの攻撃用スクリプトが入ったとしてもesc_attrがエスケープしてくれます。