因此,我正在使用Starkers以我的下一个WP主题为基础,并且我遇到了一个小问题,我将自己的Jquery版本包括在 header.php 文件,但是当使用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() 功能,但这是管理页面所需的,因此我必须将其放回原处。

我还想使用(至少实验)使用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');

看到 法典页面 有关更多信息。

其他提示

我建议看看 使用WordPress使用jQuery的5个提示. 。除其他外,它显示了从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');

您也可以查看 使用Google库 插入。

尽管@tnorthcutt是正确的,如果要加载自己的jQuery,应该正确地脱离WP的本机jQuery,但是当您加载其他WP Core的其他jQuery版本时,您一定会遇到问题。核心和插件都依靠它在那里。因此,如果您每次更新WP时都不会使用最新的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');
许可以下: CC-BY-SA归因
scroll top