Из записи Кодекса для проверки данных: URL :
esc_url( $url, (array) $protocols =
null )
(с 2.8)
Всегда используйте esc_url при очистке URL-адресов (в текстовых узлах, узлах атрибутов или где-либо еще). Отклоняет URL-адреса, которые не имеют одного из предоставленных белых списков протоколов (по умолчанию http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed и telnet), удаляет недопустимые символы и удаляет опасные символы. Устаревший с версии 3.0: clean_url () Эта функция кодирует символы как объекты HTML: используйте его при создании (X) документа HTML или XML. Кодирует амперсанды (&) и одинарные кавычки (') в виде числовых ссылок на сущности (&,').
esc_url_raw( $url, (array) $protocols
= null )
(с 2.8)
Для вставки URL в базу данных. Эта функция не кодирует символы как объекты HTML: используйте ее при сохранении URL-адреса или в других случаях, когда вам нужен некодированный URL-адрес. Эта функциональность может быть воспроизведена в старой функции clean_url, установив $ context в db.
Итак, основные отличия выглядят так:
esc_url()
кодирует объекты HTML, а esc_url_raw()
не
esc_url()
предназначен для
вывода , а esc_url_raw()
для хранения базы данных
РЕДАКТИРОВАТЬ:
Поскольку вы либо жестко программируете (или сохраняете / сохраняете отдельно) фактический URL-адрес из строки запроса, а затем [add_query_arg()][2]
добавляете строку запроса через нее, может быть, лучше esc_js()
вместо того, чтобы экранировать добавленную строку запроса , а не через esc_url()
?
Например:
add_query_arg( esc_js( 'apples' ), esc_js( '420' ), $myurl )
esc_url()
не работает должным образом, когда у вас есть аргументы запроса в URL, который вы хотите вывести