esc_url() の使い方|説明・引数・注意点

説明

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

コメント

タイトルとURLをコピーしました