您应该使用wp_enqueue_script(\'jquery\')
- 这样,如果插件也尝试加载多个实例,您就不会得到多个实例。
要使用Google CDN,请将其放置在functions.php
;
wp_deregister_script( \'jquery\' );
wp_register_script(
\'jquery\',
\'https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js\',
null, // Dependencies - none
null // Version - use null to prevent WP adding version argument "?ver" in URL
);
Update: 就个人而言,我知道这听起来像是在逃避责任,但我不会费心检查CDN。谷歌是如此的可靠,而且很可能它已经在用户的浏览器缓存中了(很多网站都使用谷歌的CDN)。
However, 我有责任回答,你有两个选择之一;
使用远程get检查服务器端,如果失败,则提供本地副本(价格昂贵且不推荐)
运行一个脚本客户端来检查jQuery,并在必要时打印回退(2)的问题是,您需要在jQuery之后以及依赖它的任何其他插件启动脚本之前注入此脚本。我知道您可以做到这一点的唯一方法是“侦听”jQuery,然后在下一次调用时输出JavaScript。魔法?把这个放进你的functions.php
;
/**
* Print fallback script right after jQuery is printed from queue.
*
* @param string $src
* @return string
*/
function wpse_12448_fallback_jquery( $src, $handle = null ) {
static $run_next = false;
if ( $run_next ) {
// Defaults to WP bundled jQuery, but you should use your own that
// matches the version loaded via CDN.
$local = includes_url( \'js/jquery/jquery.js\' );
echo <<<JS
<script>window.jQuery || document.write( \'<script src="$local"></script>\' );</script>
JS;
$run_next = false;
}
if ( $handle === \'jquery\' )
$run_next = true;
return $src;
}
add_action( \'wp_head\', \'wpse_12448_fallback_jquery\', 2 );
if ( ! is_admin() )
add_filter( \'script_loader_src\', \'wpse_12448_fallback_jquery\', 10, 2 );
对于那些知情者来说,这也是wp_head
紧接着wp_print_scripts
如果之后没有更多的脚本可打印,就会触发jquery
(该函数在下一个调用中执行它的工作,而不是在jQuery中调用它的实例)。