WordPressで使うエスケープの関数について

WordPressでHTMLが含まれる可能性のある文字列をechoなどで表示する際にはエスケープする必要があります。完全なる無知ですが、WordPressでエスケープする場合はすべて esc_html をつければよいと思っていました…。

先日読んだKindle書籍(Amazon.co.jp: WordPress3.5対応 テーマカスタマイズのためのPHP)のなかで、エスケープする関数は esc_html だけではないという事を知ったので違いや使い方等を調べてみました。

WordPressで使えるエスケープする関数は以下のページで確認できます。

沢山ありますがつかう事がありそうな関数は esc_html と esc_attr 、esc_urlの3つです。

3つの関数の意味・使い方

esc_html と esc_attr は違いがよくわかりませんでしたが、こちらの記事「【WordPressで文字列を出力する際のエスケープ「esc_html」「esc_attr」の違いについて】 | 今村だけがよくわかるブログ」で分かりやすく解説されていました。

esc_html

< > & ” ‘をエンティティ化する。(「<」→「&lt;」「>」→「&gt;」等表示に支障がないように置き換えてくれる。)
表示するだけならこの esc_html を使う。

使用例
<?php echo esc_html( $text ) ?>

esc_attr

< > & ” ‘をエンティティ化する。HTMLタグ属性を取り除く。
タグの属性値として出力する際に使用する。
inputなどの値として出力して使う場合はこちらの esc_attr を使う。

使用例
<?php echo '<input type="text" name="fname" value="' . esc_attr( $_POST['fname'] ) . '">';  ?>

esc_url

URL文字列になっているかを調べて、適切でない場合は取り除き、URL文字列として最適化する。
アドレスを出力する際に使う。

使用例
<?php esc_url( $url, $protocols, $_context ); ?>

$protocols は許容されるプロトコルの配列を指定。何も入れなければ ‘http’, ‘https’, ‘ftp’, ‘ftps’, ‘mailto’, ‘news’, ‘irc’, ‘gopher’, ‘nntp’, ‘feed’, ‘telnet’ が適用されるようです。
$_context は特に指定しなくてよいようです。
3つも引数を指定できますが、最初の $url が指定されて入れば大丈夫そうです。

これからはきちんと使いわけして行こうと思いました。今までよく知らずに使っていたのが怖いです…。

Related Article

1 Comments & Tracbacks

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー トラブル コードサンプル コンテンツ スライドショー jQueryプラグイン php 引っ越し 素材 お知らせ JavaScript Facebook CSS カテゴリー 投稿タイプ IE HTML5 Shareボタン seo レスポンシブ Photoshop タクソノミー ナビゲーション カスタムメニュー Git Macアプリ サイドバー WPセキュリティ SVG iTunes PHPリファレンス API WP使い方 query_posts データベース get_posts() 条件分岐 コメント function RSS スマートフォン Sass/Compass さくらVPS