De la entrada del Codex para Validación de datos: URL :
esc_url( $url, (array) $protocols =
null )
(desde 2.8)
Utilice siempre esc_url al desinfectar URL (en nodos de texto, nodos de atributos o en cualquier otro lugar). Rechaza las URL que no tienen uno de los protocolos incluidos en la lista blanca (por defecto a http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed y telnet), elimina los caracteres no válidos y elimina los caracteres peligrosos. En desuso desde 3.0: clean_url () Esta función codifica caracteres como entidades HTML: úsela al generar un documento (X) HTML o XML. Codifica símbolos de unión (&) y comillas simples (') como referencias de entidad numérica (&,').
esc_url_raw( $url, (array) $protocols
= null )
(desde 2.8)
Para insertar una URL en la base de datos. Esta función no codifica caracteres como entidades HTML: úsela cuando almacene una URL o en otros casos donde necesite la URL no codificada. Esta funcionalidad se puede replicar en la antigua función clean_url estableciendo $ context en db.
Entonces, las principales diferencias parecen ser:
esc_url()
codifica entidades HTML, mientras esc_url_raw()
que no
esc_url()
está destinado a la
salida , mientras que esc_url_raw()
está destinado al almacenamiento de la base de datos
EDITAR:
Dado que está codificando (o guardando / almacenando por separado) la URL real de la cadena de consulta, y luego agrega la cadena de consulta a través de [add_query_arg()][2]
, ¿podría ser mejor escapar de su cadena de consulta adjunta en esc_js()
lugar de esc_url()
?
Por ejemplo:
add_query_arg( esc_js( 'apples' ), esc_js( '420' ), $myurl )
esc_url()
no funciona correctamente cuando tiene argumentos de consulta en una URL que desea generar