为何在WordPress 4.9.5中调用wp_enqueue_script('jquery')无法加载jQuery?
嘿,我来帮你分析下这个jQuery加载失败的问题,结合你提供的代码片段,可能有这几个常见原因和解决办法:
1. 混淆了WordPress的jQuery NoConflict模式
WordPress默认会把jQuery置于NoConflict模式,这意味着你不能直接用$来调用jQuery,必须用jQuery全称,或者在函数内部重新映射$。很多时候看起来像是没加载成功,其实只是调用方式错了。
你可以先做个简单测试:在页面底部添加一段代码,打开浏览器控制台查看输出:
console.log(jQuery);
如果能输出jQuery对象,说明已经加载成功,只是调用方式需要调整。正确的写法应该是这样:
jQuery(document).ready(function($) { // 这里就可以正常用$来调用jQuery了 $('.your-element').doSomething(); });
2. 主题/插件禁用了默认jQuery
有些主题或插件会通过wp_deregister_script('jquery')来移除WordPress自带的jQuery,替换成自定义版本。如果你的主题或某个插件做了这个操作,再调用wp_enqueue_script('jquery')就可能失效。
你可以检查主题的functions.php文件,或者暂时禁用所有插件,看看jQuery能否正常加载。如果是插件导致的,就找到对应的插件修改或替换;如果是主题的问题,要么移除wp_deregister_script('jquery')这段代码,要么确保重新注册了有效的jQuery文件:
wp_deregister_script('jquery'); wp_register_script('jquery', get_template_directory_uri() . '/js/jquery.min.js', array(), '3.6.0', true); wp_enqueue_script('jquery');
3. 脚本加载顺序或位置冲突
你的isotope脚本设置了在footer加载(最后一个参数true),而WordPress默认的jQuery是在header加载的。虽然依赖关系已经设置(array('jquery')),但偶尔可能因为缓存或页面渲染问题出现加载异常。
你可以尝试强制让jQuery也在footer加载,修改你的代码:
wp_enqueue_script('jquery', '', array(), false, true);
这样jQuery会和isotope一起在footer加载,避免位置差异导致的问题。
4. 旧版本WordPress的兼容性问题
WordPress 4.9.5是比较老旧的版本,自带的jQuery版本也相对陈旧,可能和某些插件存在兼容性冲突,导致jQuery被阻塞加载。
建议先暂时禁用所有第三方插件,只保留主题的基础脚本,看看jQuery能否正常加载。如果可以,再逐个启用插件,排查出冲突的那个插件,要么更新插件版本,要么替换成兼容旧版WP的插件。
附上你提供的主题脚本代码片段:
<?php // 添加CSS和JS文件 function add_theme_scripts() { wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css', array(), '4', 'all'); wp_enqueue_style( 'main', get_template_directory_uri() . '/css/main.css', array(), '1.1', 'all'); wp_enqueue_style( 'style', get_stylesheet_uri() ); wp_enqueue_script('jquery'); wp_enqueue_script( 'isotope', get_template_directory_uri() . '/js/isotope.pkgd.min.js', array ( 'jquery' ), '3.0.6', true); wp_enqueue_script( 'i...'
内容的提问来源于stack exchange,提问作者anisurrahman

