WordPress更新后报Uncaught TypeError: $ is not a function如何解决
报错原因
WordPress 自带的 jQuery 库默认启用无冲突模式,会释放$别名的使用权,避免和其他 JavaScript 库产生命名冲突。你更新主题、插件后,原有对$别名的兼容配置被覆盖,或是新的插件/主题代码直接使用$调用 jQuery 未做兼容,就会触发该报错。
修复方案
- 方案1:直接修改报错的JS代码(适配性最高,推荐)
将报错的代码段包裹入jQuery兼容的立即执行函数或就绪回调中,函数内部可正常使用$别名:
// 写法1:适合需要等DOM加载完成后执行的轮播初始化逻辑 jQuery(document).ready(function($) { var $slid = $('#wp_posts_carousel-2 .owl-carousel').owlCarousel({ // 保留你原有的 owlCarousel 配置参数即可 }); }); // 写法2:不需要等待DOM加载时使用 (function($) { var $slid = $('#wp_posts_carousel-2 .owl-carousel').owlCarousel({ // 原有配置 }); })(jQuery);
- 方案2:全局注册
$别名(适合无法直接修改插件代码的场景)
在当前使用的主题目录下的functions.php文件末尾添加如下PHP代码,全局绑定$到jQuery:
add_action('wp_enqueue_scripts', function() { wp_add_inline_script('jquery', 'var $ = jQuery.noConflict();'); }, 999);
注意:该方案需要确认你的站点没有引入其他使用
$作为别名的JS库,否则可能引发新的命名冲突。
- 方案3:排查jQuery重复加载问题
更新后部分插件可能会强制加载第三方、低版本的jQuery,覆盖WordPress自带的jQuery导致冲突。你可以检查页面源码中的jQuery引入地址,移除多余的jQuery加载逻辑,保留WordPress官方自带的版本即可。
内容的提问来源于stack exchange,提问作者Sara Bajbak
相关产品推荐
相关产品推荐

