Функция подготавливает (очищает) переданную в неё строку как URL для редиректов, HTTP-запросов и запросов к базе данных.
Как конкретно работает функция:
esc_url_raw( $url, $protocols = null )
Параметры
- $url
- (строка) Текст, который предположительно является урлом, который мы и должны очистить.
- $protocols
- (массив) Массив из поддерживаемых протоколов в урле (http,ftp и так далее). Если в переданном URL используется протокол, который не указан в этом массиве, то функция возвращает пустую строку. По умолчанию – значение функции
wp_allowed_protocols()
, которая возвращает массив:Array ( [0] => http [1] => https [2] => ftp [3] => ftps [4] => mailto [5] => news [6] => irc [7] => irc6 [8] => ircs [9] => gopher [10] => nntp [11] => feed [12] => telnet [13] => mms [14] => rtsp [15] => sms [16] => svn [17] => tel [18] => fax [19] => xmpp [20] => webcal [21] => urn )
Array ( [0] => http [1] => https [2] => ftp [3] => ftps [4] => mailto [5] => news [6] => irc [7] => irc6 [8] => ircs [9] => gopher [10] => nntp [11] => feed [12] => telnet [13] => mms [14] => rtsp [15] => sms [16] => svn [17] => tel [18] => fax [19] => xmpp [20] => webcal [21] => urn )
Пример. Правильное и неправильное использование
В самом начале описания этой функции, я упомянул, что её нельзя использовать при выводе URL в качестве HTML-атрибутов, а использовать для HTTP-запросов, редиректов и так далее. Что же это означает?
Это означает прежде всего, что подобное использование функции небезопасно!
// Не надо так! Используем esc_url()! echo '<a href="' . esc_url_raw( $url ) . '">WordPress</a>';
Другое дело – создание HTTP-запросов.
$url = 'http://wordpress.org'; $response = wp_remote_get( esc_url_raw( $url ) ); // всё супер