2

在这个 WordPress 函数中注册一个脚本wp_register_script可以用来加载外部脚本,格式如下:

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

文档中所示,第二个参数可以以“//”开头,让 WordPress 指定协议:

可以使用与协议无关的 URL 指定远程资产​​,即“//otherdomain.com/js/theirscript.js”。默认值:无

对于 WordPress 3.5.1 可以正常工作,但对于 WordPress 3.4.2 则不行。

两个问题:

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

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

4

2 回答 2

3

这在 core Ticket #16560中进行了讨论:

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

class.wp-scripts.phpclass.wp-styles.php进行正则表达式检查^https?://以确定它是否是外部资源,但应该真正使用^(https?:)?//- 甚至^(\w+:)?//(因为某些疯子可以使用 ftp 例如)。

该票已在八个月前关闭并设置为固定,但在版本 3.5 中实施。

对于需要手动检查协议的情况,is_ssl()使用该函数:

$protocol = is_ssl() ? 'https://' : 'http://';
于 2013-03-10T12:29:44.990 回答
1

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

于 2013-03-10T04:08:24.090 回答