概要
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 | 〇 |
非推奨または削除されたワードプレスバージョン
- 特に非推奨または削除されたバージョンはありません。