esc_url()


WordPress関数esc_url()は、URLをエスケープするために使用されます。この関数は、URLを適切に処理し、安全に出力するために設計されています。

構文

esc_url( string $url, array|string $protocols = null, string $_context = 'display' );

引数の説明:

  • $url (string) — エスケープしたいURL。
  • $protocols (array|string, 任意) — 許可するプロトコルのリスト。例: ['http', 'https']
  • $_context (string, 任意) — コンテキスト。デフォルトは'display'

例 1: URLをエスケープして出力

これは基本的な使用例で、ユーザーが入力したURLを安全に出力します。

<?php echo esc_url( 'https://example.com?param=<script>alert(1)</script>' ); ?>

例 2: 特定のプロトコルのみを許可

許可されたプロトコル以外のURLをフィルタリングします。

<?php 
$allowed_protocols = ['http', 'https'];
echo esc_url( 'ftp://example.com', $allowed_protocols ); 
?>

例 3: コンテキストを指定してエスケープ

$_context引数を指定して、エスケープ方法を調整します。

<?php 
echo esc_url( 'https://example.com', null, 'login' ); 
?>

例 4: カスタムメニューリンクでの使用

カスタムメニューのURLをエスケープする方法。

<?php 
$menu_url = get_option( 'custom_menu_url' );
echo '<a href="' . esc_url( $menu_url ) . '">リンク</a>'; 
?>

例 5: フォーム内のURL入力を処理

ユーザー入力のURLをエスケープして保存します。

<?php 
if ( isset( $_POST['url'] ) ) {
    $safe_url = esc_url( $_POST['url'] );
    update_option( 'user_input_url', $safe_url );
}
?>

注意点

  • この関数は、信頼できない入力を安全に処理するために設計されていますが、常に適切な入力検証を行うべきです。
  • $protocolsを指定しない場合、デフォルトでWordPressが許可するプロトコルリストが使用されます。

関連機能: