2022年04月25日

WP関数:esc_url()

この関数の説明

WP関数の esc_url() は、URLのエスケープ処理(無害化)する関数です。

URLのプロトコル(http、https等)をチェックすると共に、無効/危険なキャラクタ削除と記号の文字コード変換を行います。

記号 扱い
< 削除
> 削除
" 削除
' &#39;に変換
& &amp;に変換

 


関数

esc_url($text , $protocols , $_context )

 


パラメータ

$text文字列必須

エスケープ対象のURL

 

$protocols(配列)(オプション)

許可するプロトコルの配列。

デフォルトは ['http','https','ftp','ftps','mailto','news','irc','gopher','nntp','feed','telnet']

 

$_context(文字列)(オプション)

URLをどのように用いるか。省略時は 'display'.

 


戻り値

無害化されたURL

 


事例

①無効/危険なキャラクタ削除と記号の文字コード変換

<?php
	var_dump("https://'&");	echo '<br>';				// 文字'&の扱い
	var_dump(esc_url("https://'&"));echo '<br>';	// 上記のエスケープ処理
	var_dump('https://"<>');echo '<br>';			    // 文字"<>の扱い
	var_dump(esc_url('https://"<>'));echo '<br>';// 上記のエスケープ処理
	echo esc_url("https://example.com/<script>xxx</script>");
?>

■2~3行目:' & の扱い

2行目の結果:string(10) "https://'&"

3行目の結果:string(20) "https://'&"

上記からエスケープ処理をすると文字コードに置き換わっているのが判ります。

■4~5行目:" < > の扱い

4行目の結果:string(11) "https://"<>"

5行目の結果:string(8) "https://"

上記からエスケープ処理をすると、これらの記号は削除されたことが判ります。

■6行目:URLにスクリプトがあるケース

URLの中にスクリプトがあっても<>が削除されて下記の様になります。スクリプトは動きません。

6行目の結果:https://example.com/scriptxxx/script

 

②一般的な使い方

<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>

home_url()で取得したURLをエスケープ処理してからechoしています。

 


関連情報

関連関数は エスケープ処理関数 を参照してください。

 

関数一覧
  • 1.WPのエスケープ処理
  • 2.WPプログラムの基本
  • 3.ヘッダ/フッタ/サイドバで使われる関数
  • 4.DBからの読込関数
  • 5.一般テンプレートの中で使われる関数
  • 6.その他のWP関数
  • add_shortcode()
  • bloginfo()
  • body_class()
  • date_i18n()
  • dynamic_sidebar()
  • edit_post_link()
  • esc_attr()
  • esc_html_e()
  • esc_html()
  • esc_url()
  • get_ancestors()
  • get_cat_ID()
  • get_cat_name()
  • get_category_link()
  • get_category_parents()
  • get_category()
  • get_footer()
  • get_header()
  • get_home_url()
  • get_post_format()
  • get_post_meta()
  • get_post_thumbnail_id()
  • get_query_var()
  • get_search_query()
  • get_sidebar()
  • get_site_url()
  • get_stylesheet_directory_uri()
  • get_stylesheet_uri()
  • get_template_directory_uri()
  • get_template_part()
  • get_the_category()
  • get_the_content()
  • get_the_date()
  • get_the_excerpt()
  • get_the_ID()
  • get_the_modified_date()
  • get_the_modified_time()
  • get_the_permalink()
  • get_the_post_thumbnail()
  • get_the_tags()
  • get_the_time()
  • get_the_title()
  • get_uploaded_header_images()
  • get_year_link()
  • has_category()
  • has_custom_logo()
  • has_header_image()
  • has_header_video()
  • has_nav_menu()
  • has_post_thumbnail()
  • has_tag()
  • header_image()
  • home_url()
  • is_admin()
  • is_category()
  • is_date()
  • is_front_page()
  • is_home()
  • is_main_query()
  • is_page()
  • is_search()
  • is_single()
  • language_attributes()
  • the_category()
  • the_content()
  • the_custom_header_markup()
  • the_custom_logo()
  • the_date()
  • the_excerpt()
  • the_ID()
  • the_modified_date()
  • the_modified_time()
  • the_permalink()
  • the_post_thumbnail()
  • the_search_query()
  • the_tags()
  • the_time()
  • the_title()
  • update_post_meta()
  • wp_get_attachment_image_src()
  • wp_nav_menu()
  • WP_Query()