请教一个 WordPress 载入 jQuery 库 的问题

2014-06-17 12:20:23 +08:00
 wandero
因为大家都知道的原因,google cdn 上的 jQuery 库在国内都挂掉了
我的 WP 上有几个插件都调用了 google 上面的 jquery-ui.min.js,还是不同版本的

GET http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js?ver=1.10.4
GET http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
GET http://ajax.googleapis.com/ajax/libs/jquery/1.10.4/jquery.min.js

看到网上有替换 sae cdn 方法,但是具体在这个场景下的操作不是很明白

请问要把 google 替换成 sae 或 服务器本地上的 库需要怎么写

因为插件会不断更新,可以把代码写在主题模板上的 footer 里面吗

照着帖子写了

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">window.jQuery || document.write('<script type="text/javascript" src="//lib.sinaapp.com/js/jquery/1.9.0/jquery.min.js"><\/script>')</script>

但是好像没效果,而且多个版本 jquery.min 也不知道怎么处理

谢谢
4653 次点击
所在节点    问与答
10 条回复
tmqhliu
2014-06-17 12:32:01 +08:00
Wordpress 自带 jquery 你把这些注释掉 用 wordpress 自带的 wp_enqueue_script() 函数引入即可
WildCat
2014-06-17 12:41:18 +08:00
把你theme的<head>域贴出来先
belin520
2014-06-17 13:32:01 +08:00
打开wordpress代码中的文件wp-includes/script-loader.php文件,搜索:fonts.googleapis.com找到这行代码:
$open_sans_font_url = "//fonts.googleapis.com/css?family1=Open+Sans:300italic,400italic,600italic,300,400,600&subset=$subsets";

把fonts.googleapis.com替换为fonts.useso.com

或者可以将以下代码复制到主题functions.php中
function ipc_google_font($content)
{
return str_replace('fonts.googleapis.com', 'fonts.useso.com', $content);
return str_replace('ajax.googleapis.com', 'ajax.useso.com', $content);
}
ob_start("ipc_google_font");
belin520
2014-06-17 13:33:44 +08:00
@belin520 上面是替换字体的,替换其他类型,供参考
emric
2014-06-17 13:50:24 +08:00
@belin520 使用的方法不够严谨, 如果重置 Jquery 可以用下面的方法~
https://gist.github.com/unmric/fb03f98ed5e62534b0b6
wandero
2014-06-17 15:28:04 +08:00
谢谢各位回复

@tmqhliu 因为有多个插件包含 Jquery ,而且插件更新会覆盖掉修改,所以我在主贴里已经说了想找一种能在模板文件之类位置批量重置的方法,而不去修改插件本身……

@WildCat <head>里没有 Jquery 信息,调用的是几个插件

@emric (我是个代码盲= =)据我理解这段代码是用来注销 WP 本身的 Jquery 库,然后引用 jquery 上的库,这个对主贴里提到的插件直接引用的 google 上的库有效吗?另外这段代码应该放在什么位置?
emric
2014-06-17 15:35:07 +08:00
@wandero 这是最标准的做法, 并对所有标准插件有效.
把他丢在 functions.php 尾端就好了~ (去掉前面的 <?php )
yinxingren
2014-06-17 16:26:12 +08:00
@wandero 同学@emric 的方法是标准的WP函数HOOK,建议这种~简单快捷啦
ccbikai
2014-06-17 17:34:32 +08:00
<?php
/**
* Plugin Name: Replace Google Libs
* Plugin URI: http://www.soulteary.com/2014/06/15/replace-google-libs.html
* Description: Use Qihoo 360 Open Libs Service to replace Google's.
* Author: soulteary
* Author URI: http://www.soulteary.com/
* Version: 1.0
* License: GPL
*/


/**
* Silence is golden
*/
if (!defined('ABSPATH')) exit;

class Replace_Google_Libs
{

/**
* init Hook
*
*/
public function __construct()
{
add_filter('wp_print_scripts', array($this, 'ohMyScript'), 1000, 1);
}


/**
* Use Qihoo 360 Open Libs Service to replace Google's.
*/
public function ohMyScript()
{
global $wp_scripts;
if($wp_scripts && $wp_scripts->registered){
foreach ($wp_scripts->registered as $libs){
$libs->src = str_replace('//ajax.googleapis.com', '//ajax.useso.com/', $libs->src);
}
}
}
}

/**
* bootstrap
*/
new Replace_Google_Libs;
wandero
2014-06-18 09:05:44 +08:00
@emric 非常感谢,这么做了以后 jquery.min.js 正常了,但是又冒出一个 jquery-ui……
于是我可耻的放弃折腾,用了 @ccbikai 推荐的插件,问题解决……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/117953

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX