概要
esc_url 関数は、URL文字列をクリーニングするために使用されるWordPressの関数です。この関数を利用することで、不正なURLやセキュリティ上のリスクを軽減し、安心してURLを出力することが可能になります。esc_url は主に以下のような機能を実装する際によく使われます。
- リンク生成時のURL検証
- フォーム送信時のURLのサニタイズ
- データベースに保存する前のURLのクリーニング
- テーマやプラグインでのリダイレクトURLの生成
- カスタムフィールドで保存されているURLの処理
- メディアアップロード時の自動URLクリーニング
- ウィジェットでのURL表示
- REST APIでのURLパラメータのサニタイズ
構文
esc_url( string $url, array $protocols = null )
パラメータ
$url(string) : クリーニング対象のURL。$protocols(array, optional) : 許可するプロトコルのリスト。デフォルトは ‘http’ および ‘https’。
戻り値
- (string) : クリーニングされたURLまたは空文字列。
関連する関数
使用可能なバージョン
- WordPress 1.5.0以降
コアファイルのパス
wp-includes/formatting.php
サンプルコード
サンプルコード 1
$url = 'http://example.com/page?param=<script>alert(1)</script>';
$sanitized_url = esc_url($url);
echo $sanitized_url;
このサンプルコードは、悪意のあるスクリプトを含むURLを esc_url 関数でクリーニングし、安全な形式で出力します。
サンプルコード 2
$url = 'ftp://example.com/resource';
$sanitized_url = esc_url($url, array('http', 'https'));
echo $sanitized_url; // 出力は空文字列
このサンプルコードでは、FTPプロトコルを含むURLをクリーニングし、HTTPとHTTPS以外のプロトコルは排除されるため、空文字列が出力されます。
サンプルコード 3
$url = 'http://example.com/valid-url/';
$sanitized_url = esc_url($url);
if ($sanitized_url) {
echo '<a href="' . $sanitized_url . '">Click Here</a>';
}
このサンプルコードは、有効なURLをクリーニングし、その結果を使用して安全なリンクを生成します。
サンプルコード 4
$input_url = 'javascript:void(0)';
$sanitized_url = esc_url($input_url);
if (empty($sanitized_url)) {
echo 'Invalid URL!';
}
このサンプルコードでは、無効なJavaScript URLをクリーニングし、結果が空であることをチェックします。
サンプルコード 5
$urls = array(
'http://example.com',
'https://secure.com',
'ftp://notallowed.com'
);
foreach ($urls as $url) {
echo esc_url($url) . '<br>';
}
このサンプルコードは、配列内の複数のURLをクリーニングし、それぞれの結果を改行して出力します。
この関数のアクションでの使用可能性
| アクション名 | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | 〇 |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head | 〇 |
非推奨または削除されたワードプレスバージョン
- 特に非推奨または削除されたバージョンはありません。