2013-03-10 32 views
2

在这个WordPress函数注册脚本wp_register_script可以使用,来加载外部脚本,后续格式:wp_register_script与协议无关的源参数

wp_register_script('my_jQuery', '//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'); 

如出现在documentation第二参数可以与开始“/ /”离开WordPress的指定协议:

远程资产可以与协议无关的网址,即 ‘//otherdomain.com/js/theirscript.js’来指定。默认:无

对于WordPress 3.5.1工作正常,但对于WordPress 3.4.2不。

两个问题:

1-从中WordPress版本可以使用 “//” 的第二个参数?

2-对于不支持这种格式的WordPress版本“//”,这是推荐的外部资源调用方式?我应该要求WordPress页面协议并相应地使用它吗?

回答

3

这个核心Ticket #16560讨论:

当加载外部资源,大多数浏览器(需被确认)将自动选择https://http://,如果url-scheme只是//。例如,如果包含页面为https本身,则//ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js将通过https加载,但如果不包含,则通过http

class.wp-scripts.phpclass.wp-styles.php做一个正则表达式支票^https?://,以确定它是否是外部资源与否,而是应该真正利用​​- 甚至^(\w+:)?//(因为一些疯子可能使用FTP为例)。

门票已关闭并且设置为八个月前固定,但在版本3.5中为only implemented

对于您需要手动检查协议的情况下,该功能is_ssl()用于:

$protocol = is_ssl() ? 'https://' : 'http://'; 
+0

太好了,谢谢,我会这样做的。 – leticia 2013-03-10 16:47:38

1

虽然我不知道哪个版本的WordPress支持协议不可知的URL,但我可以回答你的第二个问题。协议不可知的URL的目的是在加载资源时自动使用SSL连接或常规连接,这些资源是基于当前用于加载页面的资源。无论您是否在您的网站上使用SSL连接,如果您想要支持旧版本的WordPress,那么我会尽可能使用https://而不是//。请注意,这仅适用于支持SSL连接的外部脚本,例如Google托管的脚本。如果要加载不支持SSL的资源,那么选择是明确的,只要使用http://代替//

+0

感谢韦斯,一为有用的信息。 – leticia 2013-03-10 16:46:43