Na entrada Codex para Validação de Dados: URLs :
esc_url( $url, (array) $protocols =
null )
(desde 2.8)
Sempre use esc_url ao limpar URLs (em nós de texto, nós de atributo ou em qualquer outro lugar). Rejeita URLs que não possuem um dos protocolos fornecidos na lista de permissões (por padrão, http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed e telnet), elimina caracteres inválidos e remove caracteres perigosos. Descontinuado desde 3.0: clean_url () Esta função codifica caracteres como entidades HTML: use-o ao gerar um documento (X) HTML ou XML. Codifica e comercial (&) e aspas simples (') como referências numéricas de entidade (&,').
esc_url_raw( $url, (array) $protocols
= null )
(desde 2.8)
Para inserir um URL no banco de dados. Essa função não codifica caracteres como entidades HTML: use-a ao armazenar uma URL ou em outros casos em que você precise da URL não codificada. Essa funcionalidade pode ser replicada na função clean_url antiga, definindo $ context para db.
Portanto, as principais diferenças parecem ser:
esc_url()
codifica entidades HTML, enquanto esc_url_raw()
não
esc_url()
destina-se à
saída , enquanto esc_url_raw()
destina-se ao armazenamento de banco de dados
EDITAR:
Como você está codificando (ou salvando / armazenando separadamente) o URL real da string de consulta e depois anexando a string de consulta [add_query_arg()][2]
, pode ser melhor escapar dessa string de consulta anexada em esc_js()
vez de esc_url()
?
Por exemplo:
add_query_arg( esc_js( 'apples' ), esc_js( '420' ), $myurl )
esc_url()
não funcionar corretamente quando você tem consulta argumentos em uma URL que você wanto para a saída