我已经尝试了我所知道的每一种方式,并且已经阅读过,将jquery库移动到页脚,包括以下内容以及以下各种可能的变体:
function add_scripts() {
wp_deregister_script('jquery');
wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', false, '1.8.3', true);
wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'add_scripts');
和
wp_enqueue_script('jquery','/wp-includes/js/jquery/jquery.js','','',true);
我不确定这些Wordpress的版本是什么,但它们在最新版本(3.5 - 3.7)中不起作用。当然,可以从script-loader.php文件中取消注册或完全删除jquery,然后将其硬编码到页脚中,但脚本不起作用。 WordPress以某种方式阻止它实际加载,即使这样做的代码坐在html中。在有人说这个之前,当我试图在页脚中加载jquery时,之后会加载所有其他的javascript,因此它是在库之前加载jquery依赖脚本的问题。此外,许多人会说在页脚中加载核心脚本并不好,从最佳实践的角度来看,这可能是真的,但这是无关紧要的,因为谷歌希望它在页脚中,这才是真正重要的。任何建议将不胜感激。
答案 0 :(得分:9)
这是有效的(在WordPress 3.8上测试了二十四个主题):
function md_footer_enqueue_scripts() {
remove_action('wp_head', 'wp_print_scripts');
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_enqueue_scripts', 1);
}
add_action('wp_enqueue_scripts', 'md_footer_enqueue_scripts');`
脚本将在<body>
标记结束前放置,CSS文件将保留在文档的<head>
中 - 考虑到它们已加入wp_enqueue_style
。
答案 1 :(得分:1)
试试这个:
if( !is_admin()){
wp_deregister_script('jquery');
wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"), false, '1.8.2', true);
wp_enqueue_script('jquery');
}
答案 2 :(得分:0)
您好我是如何设法包含我的,但我使用cloudflare而不是谷歌您可以轻松改变它。
add_action('wp_enqueue_scripts', 'my_jquery_enqueue');
function my_jquery_enqueue() {
wp_deregister_script('jquery');
wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js" , false, null, true);
wp_enqueue_script('jquery');
}
如果那不起作用,你试过
在您的情况下, add_action('wp_footer' , 'add_scripts');
而不是add_action('wp_enque_scripts')
?
答案 3 :(得分:0)
将以下内容放入functions.php
文件中
它适用于WordPress 4.1.2
// load jquery in the footer
function ds_enqueue_jquery_in_footer( &$scripts ) {
if ( ! is_admin() ) {
$scripts->registered['jquery']->args = 1;
$scripts->registered['jquery-core']->args = 1;
$scripts->registered['jquery-migrate']->args = 1;
}
}
add_action( 'wp_default_scripts', 'ds_enqueue_jquery_in_footer', 11 );
function enqueue_jquery_in_footer() {
wp_enqueue_script( 'jquery-core' );
wp_enqueue_script( 'jquery-migrate' );
}
add_action( 'init', 'enqueue_jquery_in_footer' );
答案 4 :(得分:-5)
在文件wp-includes / script-loader.php中,在即将发生的渲染阻塞js脚本上,添加一个值为1的最后一个参数。在我的情况下:
$scripts->add( 'jquery-core', '/wp-includes/js/jquery/jquery.js', array(), '1.10.2', 1 );
$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '1.2.1', 1 );
这与以下文件记录在案:
/**
* Register all WordPress scripts.
*
* Localizes some of them.
* args order: $scripts->add( 'handle', 'url', 'dependencies', 'query-string', 1 );
* when last arg === 1 queues the script for the footer