因为我想使用jQuery 2.1而不是1.11,所以我首先必须注销jQuery。然后用新值注册它。:
add_action( 'wp_enqueue_scripts', 'add_scripts' );
function add_scripts() {
wp_deregister_script('jquery');
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js', false, '2.1.0', false);
wp_enqueue_script('jquery');
}根据手册,这应该会在标题中加载脚本。但它是装在脚上的。为什么会这样呢?
我之所以这样问是因为我有一个插件,需要在头上有一些东西。因为jquery直到页脚才被加载,所以它会抛出一些错误。
PS。如果我这样做的话:
wp_deregister_script('jquery');
wp_register_script( 'jquery-2', 'http:...');
wp_enqueue_script('jquery-2');WP将不会加载任何内容-它完全崩溃。还有其他人经历过吗?
发布于 2015-11-08 15:32:15
从理论上讲,您编写的代码应该可以工作,在实际应用程序中,您缺少一些可能会影响代码工作方式的良好实践,因此最好通过一些故障排除来勾选清单中的所有内容。
通过取消注册jquery,您将同时删除jQuery内核和jQuery迁移javascripts,可能您想要做的是取消核心的注册,并保持jQuery迁移。
jQuery迁移包含旧的遗留jQuery代码,它将遗留东西的所有功能移植到新版本的jQuery上。
在您链接的Codex页面上,如果向下滚动,您可以找到一个集成javascripts的处理程序,您可以取消注册列表。
因此,您必须取消jquery-core的注册,而不是jquery,以保持某些功能的完整,这包括插件--它们可能会运行一些遗留的jQuery东西。
您不需要在最后一个参数中附加" false“,因为默认情况下它已经是false了,我还建议删除您的协议,这样可以确保如果您希望稍后切换到https,那么始终会向浏览器提供jQuery服务。
作为最后一步,当您在一个其他人的代码与您的代码一起运行的大环境中编码时,名称空间非常重要。对于我来说,add_scripts()似乎有点过于通用了,如果您要在functions.php文件中编写函数,尝试添加主题的名称,或者编写一些非常独特的东西,那么您可以确定,将来同一个函数不会与来自插件或工作文件中的其他函数发生冲突。
add_action( 'wp_enqueue_scripts', 'YOURTHEMENAME_scripts' );
function YOURTHEMENAME_scripts() {
wp_deregister_script('jquery-core');
wp_register_script('jquery-core', '//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js', false, '2.1.0');
wp_enqueue_script('jquery-core');
}请注意,Wordpress的加载顺序如下:
Core -> Plugins -> Theme如果您试图从一个自定义插件中删除jQuery,那么您的主题可能就是接管并处理脚本队列。
如果在所有这些之后,您仍然将Javascript输入到页脚,那么您的header.php或footer.php文件中出现了一些可怕的错误:其中一个菜鸟的原因可能是主题中wp_head()和wp_footer()特定钩子的位置,我已经看过这么多次了,这很容易成为一种可能。
wp_head()是一个钩子,它为您添加元标记、css队列和js队列,最后一个标志参数设置为"false“。
wp_footer()是一个钩子,它关心向您添加JS的其余部分,最后一个标志参数设置为"true“,以及从各个插件生成的额外标记(以及来自WP核心的管理栏)。
重复检查钩子函数的位置,如果您的页脚中有wp_head(),那么很容易就可以将javascript队列添加到页脚中。
发布于 2015-11-08 13:56:02
第一:您必须将jquery等内容放入使用wp_enqueue_scripts钩子调用的函数中。这样做吧:
add_action('wp_enqueue_scripts','jquery_2_loader');
function jquery_2_loader(){
//insert your jquery deregister and Register
}第二个问题:许多插件依赖于队列jquery。所以如果你取消它的注册,那些插件就不能再使用它了。
发布于 2015-11-08 15:22:55
正确的是,将false传递给wp_register_script函数调用应该确保脚本被放在页面的标题中。您有其他插件可以修改脚本的位置吗?例如,像自动优化这样的插件将尝试“智能”地将脚本放在脚注中,以便在可能的情况下加快加载速度。
https://wordpress.stackexchange.com/questions/207967
复制相似问题