説明
esc_url() は、URLを検証・エスケープする関数です。許可されていないプロトコルは取り除かれます。
基本構文
esc_url( string $url, string[] $protocols = null, string $_context = 'display' ): string
引数
$url:URL$protocols:許可するプロトコルの配列$_context:内部用(通常は指定しません)
戻り値
エスケープ済みのURL。不正なURLは空文字。
使い方(サンプル)
$link = esc_url( home_url( '/' ) );
注意点
hrefやsrcなど、URLを出力する属性に使います。- スクリプトを実行させる危険なスキームは削除されます。
- データベースに保存するURLの整形には
esc_url_raw()を使います。
実務での使いどころ
href・srcなどの、HTMLのURLを出力するとき。- リンク先のURLを、変数から作るとき。
よくあるミスと対処
- URLを、データベースに保存するときに使っている。保存や内部処理には、
esc_url_raw()を使う。 - HTML属性にそのまま埋め込んでいる。エスケープが、必要。
- 許可されていないプロトコル(
javascript:など)を含むURLは、空文字になる。確認せずに出力する。
NG例
<a href="<?php echo $url; ?>">リンク</a> <!-- エスケープがない -->
OK例
<a href="<?php echo esc_url( $url ); ?>">リンク</a>
使い分け早見表
| 場面 | 使う関数 |
|---|---|
| URLを、HTMLに出力する | esc_url() |
| URLを、保存・内部で使う | esc_url_raw() |
| HTMLの、その他の属性値 | esc_attr() |
関連項目
esc_url_raw()、esc_attr()、esc_html()
公式リファレンス:esc_url() | Function | WordPress Developer Resources

コメント