URLをエスケープし、安全な文字列として出力します。また、URLとして適切でない形式の場合、自動的に適切なURLの形式に補完します。例えば指定したURLにhttpsがない場合、自動的にhttpsを補完して完全なURLにします。
esc_url($url,$protocols,$_context);| 引数 | 必須/任意 | 引数に指定するもの |
|---|---|---|
| 第1引数 $url | 必須 | エスケープしたいURL(文字列) |
| 第2引数 $protocols | 任意 | 許可するプロトコルの配列(https、ftp、mailtoなど)初期値: null |
| 第3引数 $_context | 任意 | 初期値:display※初期値のまま使います(displayは表示用として使うことを意味します) |
戻り値(返す値):エスケープされたURLを返します。
※表示するにはechoします。
下記の例では、scriptが実行されてしまいます。
$url = 'https://example.com<script>alert("危険なスクリプト!");</script>';
echo $url;結果:「危険なスクリプト!」というアラートをブラウザに表示
下記の例では、URLが適切にエスケープされるため、scriptは実行されません。
$url = 'https://example.com<script>alert("危険なスクリプト!");</script>';
echo esc_url($url);結果:https://example.comscriptalert(危険なスクリプト!);/script
下記の例では、不完全なURLを補完して完全なURLにしています。
$url_imcomplete = 'example.com';
echo esc_url($url_imcomplete,['https']);結果:https://example.com
【引数とは】
テンプレートタグ(=関数)を実行する際に、引数を渡すことができるテンプレートタグがあります。引数は、関数の中で使われるので、渡す引数の値によって実行結果が変わってきます。何を処理したいのか、どのようなデータを取得したいのかによって渡す引数が変わります。
【引数について】
home_url()でトップページのURLを取得した後、エスケープ処理をしてから表示しています。
<a href="<?php echo esc_url(home_url('/')); ?>">トップページ</a>※当サイトでは初期値とデフォルト値の言葉の定義を区別せず、原則統一して初期値を採用しています。