问题描述

所以我正在使用 Starkers 来基于我的下一个 WP 主题,我遇到了一个小问题,我在 header.php 文件中包含了我自己的 jQuery 版本,但是当我使用 Firebug 检查我的网站时,我注意到 jquery 被下载了两次,我做了一些挖掘,注意到不仅包括文件,而且是 wp_head()功能。

在尝试解决这个问题时,我注意到头文件中的一个注释,其中源自二十十个主题:

/* 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()功能中注释了 jQuery 行,但是管理页面是必需的,所以我不得不把它放回来。

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

我希望你明白我正在解释什么,关于我如何解决这个问题的任何建议将是最值得赞赏的。我也会感谢任何关于如何使用头文件处理 JavaScript 文件的建议。

谢谢!

最佳解决方案

从您的问题的措辞,您必须通过在模板中编写<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

次佳解决方案

我建议看看 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://googleajax.admincdn.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 插件。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。