V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wandero
V2EX  ›  问与答

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

  •  
  •   wandero · 2014-06-17 12:20:23 +08:00 · 4722 次点击
    这是一个创建于 3806 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为大家都知道的原因,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 也不知道怎么处理

    谢谢
    10 条回复    2014-06-18 09:05:44 +08:00
    tmqhliu
        1
    tmqhliu  
       2014-06-17 12:32:01 +08:00
    Wordpress 自带 jquery 你把这些注释掉 用 wordpress 自带的 wp_enqueue_script() 函数引入即可
    WildCat
        2
    WildCat  
       2014-06-17 12:41:18 +08:00 via iPhone
    把你theme的<head>域贴出来先
    belin520
        3
    belin520  
       2014-06-17 13:32:01 +08:00   ❤️ 1
    打开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
        4
    belin520  
       2014-06-17 13:33:44 +08:00
    @belin520 上面是替换字体的,替换其他类型,供参考
    emric
        5
    emric  
       2014-06-17 13:50:24 +08:00
    @belin520 使用的方法不够严谨, 如果重置 Jquery 可以用下面的方法~
    https://gist.github.com/unmric/fb03f98ed5e62534b0b6
    wandero
        6
    wandero  
    OP
       2014-06-17 15:28:04 +08:00
    谢谢各位回复

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

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

    @emric (我是个代码盲= =)据我理解这段代码是用来注销 WP 本身的 Jquery 库,然后引用 jquery 上的库,这个对主贴里提到的插件直接引用的 google 上的库有效吗?另外这段代码应该放在什么位置?
    emric
        7
    emric  
       2014-06-17 15:35:07 +08:00   ❤️ 1
    @wandero 这是最标准的做法, 并对所有标准插件有效.
    把他丢在 functions.php 尾端就好了~ (去掉前面的 <?php )
    yinxingren
        8
    yinxingren  
       2014-06-17 16:26:12 +08:00
    @wandero 同学@emric 的方法是标准的WP函数HOOK,建议这种~简单快捷啦
    ccbikai
        9
    ccbikai  
       2014-06-17 17:34:32 +08:00   ❤️ 1
    <?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
        10
    wandero  
    OP
       2014-06-18 09:05:44 +08:00
    @emric 非常感谢,这么做了以后 jquery.min.js 正常了,但是又冒出一个 jquery-ui……
    于是我可耻的放弃折腾,用了 @ccbikai 推荐的插件,问题解决……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2869 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.