Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在页脚中加载WordPress提供的jQuery?_Php_Jquery_Wordpress - Fatal编程技术网

Php 如何在页脚中加载WordPress提供的jQuery?

Php 如何在页脚中加载WordPress提供的jQuery?,php,jquery,wordpress,Php,Jquery,Wordpress,将$in_footer参数设置为truein将在页脚中加载脚本。如果我正在添加一个新脚本,这将非常棒。但是,WordPress默认情况下已经提供了jQuery的一个版本,并且该版本已在文档头中排队 如何将WordPress提供的jQuery从页眉移动到页脚?您需要取消注册现有查询并重新注册以加载到页脚中 function jquery_in_footer() { if (!is_admin()) { wp_deregister_script('jquery');

$in_footer
参数设置为
true
in将在页脚中加载脚本。如果我正在添加一个新脚本,这将非常棒。但是,WordPress默认情况下已经提供了jQuery的一个版本,并且该版本已在文档头中排队


如何将WordPress提供的jQuery从页眉移动到页脚?

您需要取消注册现有查询并重新注册以加载到页脚中

function jquery_in_footer() {
    if (!is_admin()) {
        wp_deregister_script('jquery');

        // load the local copy of jQuery in the footer
        wp_register_script('jquery', home_url(trailingslashit(WPINC) . 'js/jquery/jquery.js'), false, null, true);


        wp_enqueue_script('jquery');
    }
}
add_action('init', 'jquery_in_footer');
请记住,如果有任何其他依赖于jQuery的脚本排队,并且没有加载到页脚中,WordPress仍将在页眉中加载jQuery以满足该依赖性

(改编自)

编辑:如果你真的想发疯,你可以直接修改WP_Scripts对象,但是你依赖的是永远不会改变的实现。我想在他们考虑移动jquery.js在wp includes中的位置之前,情况会有所改变:)

但只是为了好玩

function load_jquery_footer() {
    global $wp_scripts;
    $wp_scripts->in_footer[] = 'jquery';
}
add_action('wp_print_scripts', 'load_jquery_footer');

也许
defer
属性会有所帮助。在这个话题上有一个很好的答案。 我使用以下代码方便地非阻塞加载任何脚本,而不仅仅是jQuery

// Defer scripts.
function dt_add_defer_attribute( $tag, $handle ) {
    $handles = array(
        'jquery-core',
        'jquery-migrate',
        'fancybox',
    );
    foreach( $handles as $defer_script) {
        if ( $defer_script === $handle ) {
            return str_replace( ' src', ' defer src', $tag ); // Or ' async src'
        }
    }
    return $tag;
}
add_filter( 'script_loader_tag', 'dt_add_defer_attribute', 10, 2 );

这可能对你有所帮助:嗨@ahmad albayati,我已经在抄本上链接到了那篇文章。请看我的问题。我考虑过注销然后重新注册。这种方法的问题在于,您重新注册的版本将与WP在未来版本中使用的版本不同。我希望有一个过滤器可用,它可以让您保留使用的jQuery版本,但可以让您将$in_footer参数更改为true?您添加的链接和有关从属脚本的信息非常宝贵!非常感谢。这就是
home\uURL(trailingslashit(WPINC)。'js/jquery/jquery.js')
的作用。它在wp-includes.Cool中加载版本,我没有看到WPINC常量。再次感谢!我注意到了一件事——您不应该在wp_register_脚本中使用array()作为第三个参数而不是false吗?在WordPress 4.6.1中,jquery依赖于jquery核心和jquery迁移。因此,我不得不修改函数,只是稍微删除了jquery的dereg并添加了:
wp\u-deregister\u脚本('jquery-core')
&
wp\u-deregister\u脚本('jquery-migrate')
,然后我重新注册了jquery-core
wp\u-register\u脚本('jquery-core',/wp-includes/js/jquery/jquery.js',',',假、空、真)
和jquery migrate
wp\u register\u脚本('jquery-migrate','/wp包括/js/jquery/jquery migrate.min.js',false、null、true)
。当您将jquery放入队列时,它将加载jquerycore&jquerymigrate到页脚中。