href や src に出す URL を、安全な形にして返します。javascript: のような危ない書き方の URL は、空の文字になります。
書き方
esc_url( string $url, ?string[] $protocols = null ): string
$url:URL$protocols(省略できる):許す書き方(array( 'https' )など)。省略すると http・https・mailto・tel などを許します。
使い方の例
$link = get_post_meta( get_the_ID(), 'shop_url', true ); echo '<a href="' . esc_url( $link ) . '">お店のサイト</a>'; // https だけ許す echo esc_url( $link, array( 'https' ) );
よくある間違い
- リダイレクトや DB に保存するときに使う:
esc_url()は画面に出すための形(&を&に変える)です。保存やリダイレクトにはsanitize_url()(前の名前はesc_url_raw())を使います。 esc_html()を URL に使う。危ない URL が外れません。- 空の文字が返ってきたときの見た目(リンク先がないリンク)を考えていない。必要なら空のときはリンクにしない分け方を足します。
関連する関数
sanitize_url():保存・リダイレクト用の URLesc_html()・esc_attr()home_url():サイトの URL を作る



