【发布时间】:2018-03-29 12:32:12
【问题描述】:
WordPress 4.9.4。 默认 jquery 1.12.4 被 3.3.1 取代
wp_deregister_script('jquery');
wp_register_script('jquery', get_template_directory_uri() .
'/libs/jquery/jquery-3.3.1.min.js', array(), '3.3.1', false);
wp_enqueue_script('jquery');
一切正常,但在激活插件“NextGEN Gallery”之后。我看到,在网站的头部,不是 3.3.1,而是 1.12.4:
<script type="text/javascript" src="http://test.loc/wp-includes/js/jquery/jquery.js?ver=1.12.4"></script>
<script type="text/javascript" src="http://test.loc/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1"></script>
我认为该插件将我的 jquery 版本重新映射到它的版本。 并在控制台中写道:
JQMIGRATE: Migrate is installed, version 1.4.1
javascript.js?ver=4.9.4:18 Uncaught TypeError: $ is not a function
at setVideoHeightHome (javascript.js?ver=4.9.4:18)
at initCustomJs (javascript.js?ver=4.9.4:89)
at javascript.js?ver=4.9.4:96
我还在我的自定义 js 中看到了页脚,忘记了是什么 - “$”。
最有意思的是,如果你从谷歌的CDN中添加一个版本,那就是:
wp_deregister_script('jquery');
wp_register_script('jquery',
"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js", false, '3.3.1');
wp_enqueue_script('jquery');
一切都像以前一样正常!但是本地版本不起作用。 其实问题。 这是为什么?为什么 CDN 有效,而本地 - 不,以及如何使本地副本再次工作?谢谢!
functions.php文件中主题/子主题中的代码
function javascripts_init() {
wp_deregister_script('jquery');
wp_register_script('jquery', get_template_directory_uri() .
'/libs/jquery/jquery-3.3.1.min.js', array(), '3.3.1', false);
wp_enqueue_script('jquery');
wp_enqueue_script('bootstrap', get_template_directory_uri() .
'/libs/bootstrap/js/bootstrap.min.js');
wp_enqueue_script('custom', get_template_directory_uri() . '/javascript.js',
array(), false, true);
}
add_action( 'wp_enqueue_scripts', 'javascripts_init' );
【问题讨论】:
-
您的代码来自您的主题/子主题,对吧?能提供注册最新版jquery的完整功能吗(带action)?
-
是的,functions.php 文件中的主题/子主题中的代码 add_action( 'wp_enqueue_scripts', 'javascripts_init' );
-
您在任何地方都有
$.noConflict吗?这可能是首先要尝试的事情:)