将Google CDN jQuery加入页脚

时间:2013-11-28 作者:0Neji

我正在尝试将jQuery从Google的CDN中排队,并在我的主题的页脚而不是页眉中调用它。

这是我的代码:

wp_deregister_script(\'jquery\');
wp_enqueue_script(\'jquery\', "http" . ($_SERVER[\'SERVER_PORT\'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js", false, \'1.10.2\', true);
我发现了一些对我不起作用的潜在解决方案,它们是:

1) 将以下内容添加到我的函数中。php:

function ds_enqueue_jquery_in_footer( &$scripts ) {

if ( ! is_admin() )
    $scripts->add_data( \'jquery\', \'group\', 1 );
}
add_action( \'wp_default_scripts\', \'ds_enqueue_jquery_in_footer\' );
2)像这样调用wp\\u enqueue\\u脚本(正如我在上面所做的):

wp_enqueue_script(\'jquery\',\'/wp-includes/js/jquery/jquery.js\',\'\',\'\',true);
无论我尝试了什么,jQuery都会在标头中调用。有什么建议吗?

1 个回复
SO网友:kaiser

右钩子wp_default_scripts-hook 仅在管理员中运行wp_default_scripts() 在…上~/wp-admin/load-scripts.php 它在哪里hooked at the end of the file.

因此,要将jQuery公开移动到页脚,必须使用不同的挂钩:wp_enqueue_scripts, 它只在公众中运行。无需管理员检查。

<?php
defined( \'ABSPATH\' ) or exit;
/* Plugin Name: jQuery to the footer! */
add_action( \'wp_enqueue_scripts\', \'wcmScriptToFooter\', PHP_INT_MAX -1 );
function wcmScriptToFooter()
{
    $GLOBALS[\'wp_scripts\']->add_data( \'jquery\', \'group\', 1 );
}
我正在使用PHP_INT_MAX, 系统/服务器/操作系统所能达到的最大nr。它确保您的操作最后触发,以确保所有其他挂钩之前都运行过。尽管如此,当涉及到优先事项时,没有什么是百分之百安全的,但你有一个非常公平的机会,它会得到解决。

将有关使用的脚本排入队列$_SERVER superglobal:你应该避免使用它。命令行界面(简称:CLI,如Git/GNU Bash、Shell等)将无法从那里检索数据。这意味着所有自动化测试环境(如PHPUnit或SimpleTest)都将失败,所有cronjobs或runwhen作业都将无法从中获取任何数据。

好的是,无模式的相对URL可以在所有主要版本的所有主要浏览器中工作。这意味着//code.jquery.com/jquery-latest.min.js 将始终为您提供最新版本。

function wpse124773_jQueryFromCDN()
{
    wp_enqueue_script(
        \'jquery\',
        \'//code.jquery.com/jquery-latest.min.js\',
        array(),
        0,
        true
    );
}
如果你坚持使用“官方”的话,那就是正确的版本latest 版本,WP可能会阻塞它。原因很简单:Core不经常使用最新版本。现在,我们需要确保始终使用WordPress当前使用的版本。为了实现这一点,我们将询问WP当前版本是哪个版本。这意味着我们的脚本将始终与core保持一致并保持最新:

function wpse124773_jQueryFromCDN()
{
    $version = $GLOBALS[\'wp_scripts\']->registered[\'jquery\']->ver;

    wp_enqueue_script(
        \'jquery\',
        "//ajax.googleapis.com/ajax/libs/jquery/{$version}/jquery.min.js",
        $GLOBALS[\'wp_scripts\']->registered[\'jquery\']->deps,
        $version,
        true
    );
}

结束

相关推荐

网站首页上未加载jQuery脚本

我一直在更新一个运行在旧版本WordPress上的网站,我不得不更新主题、大多数插件,最后更新了WordPress。我不得不做一些定制,包括使用插件来替换网站使用的旧主题功能,这些功能在更新的主题中不存在/不起作用。开发人员现在不支持该主题。阻止网站上线的唯一原因是主页上的向上滚动按钮不能正常工作。用户向下滚动页面后,会出现“向上滚动”按钮,单击“平滑”后,会滚动到页面顶部并消失。这是使用添加到主题自定义中的一点jQuery实现的。js文件。习惯。js文件以以下行开头:jQuery(document).r