从Codex entry for Data Validation: URLs:
esc_url( $url, (array) $protocols =
  null ) (自2.8起)
清理url(在文本节点、属性节点或其他任何位置)时,始终使用esc\\u url。拒绝没有提供的白名单协议之一的URL(默认为http、https、ftp、ftps、mailto、news、irc、gopher、nntp、feed和telnet),消除无效字符,并删除危险字符。自3.0以来已弃用:clean\\u url()此函数将字符编码为HTML实体:在生成(X)HTML或XML文档时使用此函数。对符号进行编码(&;)和单引号(\')作为数字实体引用(&,')。
esc_url_raw( $url, (array) $protocols
  = null ) (自2.8起)
用于在数据库中插入URL。此函数不将字符编码为HTML实体:在存储URL或其他需要非编码URL的情况下使用此函数。通过将$context设置为db,可以在旧的clean\\u url函数中复制此功能。
因此,主要区别似乎是:
- 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 )