如何将外部jQuery/Javascript文件与WordPress链接

时间:2010-08-17 作者:Ben Everard

因此,我使用Starkers作为我下一个WP主题的基础,我遇到了一个小问题,我在header.php 但是当我使用Firebug检查我的网站时,我注意到jquery被下载了两次,我做了一些挖掘,并注意到我不仅包括了文件,还包括了wp_head() 作用

在尝试修复该问题时,我注意到头文件中有一条注释,该注释源于“210”主题:

/* Always have wp_head() just before the closing </head>
 * tag of your theme, or you will break many plugins, which
 * generally use this hook to add elements to <head>, such 
 * as styles, scripts, and meta tags
 */
所以这是我的问题,我的印象是jQuery文件必须设置在任何其他想要使用它的文件之前wp_head() 应该是最后一件事了<head> 元素,我现在有点困惑,因为我想知道我应该把wp_head() 因此包含WP的jQuery文件将用于我的所有插件,尽管它说不这样做。

我在wp_head() 功能,但它是管理页面所必需的,所以我不得不将其放回。

我还想使用(至少是实验)Google CDN版本的jQuery,但不想包含两次!

我希望你能理解我想解释的内容,任何关于我如何解决这个问题的建议都将不胜感激。如果您能就如何使用头文件处理JavaScript文件提供任何建议,我将不胜感激。

谢谢

3 个回复
最合适的回答,由SO网友:Annika Backstrom 整理而成

从你问题的措辞来看,你必须通过写作来添加脚本<script> 模板中的标签。通过添加您自己的脚本wp_enqueue_script() 在模板的functions.php, 在jQuery上适当设置依赖项,以及wp_head() 将为您添加脚本。

function my_scripts() {
    wp_enqueue_script( \'my-sweet-script\', get_bloginfo(\'template_directory\') . \'/script.js\', array(\'jquery\') );
}
add_action(\'template_redirect\', \'my_scripts\');
请参见codex page 了解更多信息。

SO网友:Travis Northcutt

我建议你看看5 Tips for using jQuery with WordPress. 除此之外,它还显示了从Google的库中加载jQuery所需的代码:

function my_init() {
    if (!is_admin()) {
        // comment out the next two lines to load the local copy of jQuery
        wp_deregister_script(\'jquery\');
        wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\', false, \'1.3.2\');
        wp_enqueue_script(\'jquery\');
    }
}
add_action(\'init\', \'my_init\');
您还可以查看Use Google Libraries 插件。

SO网友:cjbj

虽然@tnorthcutt正确地指出,如果您想加载自己的jquery,应该正确地将WP的本地jquery出列,但当您加载WP核心的不同jquery版本时,肯定会遇到问题。核心和插件都依赖于它的存在。因此,如果您不在每次更新WP时使用最新的jquery更新主题,您的站点可能会崩溃。

以下代码将确保您的主题始终加载jquery的正确版本,方法是首先查找WP使用的版本,然后从Google加载该版本:

$wp_jquery_version = $GLOBALS[\'wp_scripts\']->registered[\'jquery-core\']->ver;
$jquery_version = ( $wp_jquery_version == \'\' ) ? \'1.8.3\' : $wp_jquery_version; // fallback, just in case 
wp_deregister_script(\'jquery\');
wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/\'. $jquery_version .\'/jquery.min.js\', $jquery_version, false );
wp_enqueue_script(\'jquery\');

结束

相关推荐

测试jQuery或Prototype是否由另一个插件排队?

在我的插件中,我想测试jQuery或Prototype(或两者)是否将由另一个插件加载。所以,有wp_enqueue_script(\'jquery\') 或wp_enqueue_script(\'prototype\') 已调用。我在文件中有适合我的插件的代码plugin.prototype.js 和plugin.jquery.js 如果原型已排队,我的插件将使用plugin.prototype.js. 这样我就避免了在站点中加载不必要的内容。如果两者都没有加载,我将排队,以较小者为准。如何测试以查看已