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-corewp\u-register\u脚本('jquery-core',/wp-includes/js/jquery/jquery.js',',',假、空、真)
和jquery migratewp\u register\u脚本('jquery-migrate','/wp包括/js/jquery/jquery migrate.min.js',false、null、true)
。当您将jquery放入队列时,它将加载jquerycore&jquerymigrate到页脚中。