问题描述
所以我正在使用 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。