【发布时间】:2011-03-10 05:55:10
【问题描述】:
这里有几个类似的问题,但似乎没有一个可以解决我的具体情况,至少不是我发现的。这是我用来在我的 WP 主题中包含最新 jquery 版本并确保它出现在页脚中的代码。
function current_jquery($version) {
global $wp_scripts;
if ( ( version_compare($version, $wp_scripts -> registered[jquery] -> ver) == 1 ) && !is_admin() ) {
wp_deregister_script('jquery');
wp_register_script('jquery',
'http://ajax.googleapis.com/ajax/libs/jquery/'.$version.'/jquery.min.js',
false, $version, true);
}
}
add_action('wp_head', current_jquery('1.5.1'));
然后我在 header.php 中使用 wp_enqueue_script("jquery"); 并且它可以工作,除了我得到一个以“jquery.min.js?ver=1.5.1”结尾的 jquery 包含,我想摆脱查询部分。
我检查了 wp_register_script 函数,并从我阅读的内容中删除了查询,我只需将最后一个变量的第二个替换为空白字符串“”。但是,当我这样做时,我会得到“默认”的 wordpress 版本,即“jquery.min.js?ver=3.0.1”(或当时可能发生的任何情况)。
因为我不是 100% 了解这里发生的一切(在 current_jquery、add_action 和 wp_enqueue_script 之间)我什至不确定从哪里开始($version 是否以某种方式被分配了 WP 版本值?)我所知道的是wp_register_script 似乎没有按照记录的方式响应版本输入。我在这里错过了什么?
我应该补充一点,我想避免在输出“src”字符串上使用字符串操作(split、reg_replace、what have you)来执行此操作,因为必须有更好的方法。
【问题讨论】:
-
只是出于好奇——为什么要删除查询部分?
-
我假设更多站点将使用 jQuery 的“手动”包含,因此他们将简单地引用“ajax.googleapis.com/ajax/libs/jquery/1.5. 1/jquery.min.js" 没有查询字符串。这意味着该文件将已经缓存在用户浏览器中,并且他们在访问我的网站时不需要再次下载它。查询字符串搞砸了。
-
啊,是的,很有道理。