Woodmart主题v7.4.2更新后移动端Uber Menu无法打开求助
问题根源
Woodmart v7.4.2的主题JS与Uber Menu脚本存在兼容性冲突,导致某未定义对象被调用length属性,触发Uncaught TypeError: Cannot read property 'length' of undefined错误,阻断了菜单的点击逻辑。
修复方案
1. 禁用主题自带移动端菜单脚本
进入WordPress后台 → 外观 → 自定义 → Woodmart主题设置 → 页眉设置,找到移动端菜单相关选项,关闭主题原生的移动端菜单触发脚本,仅保留Uber Menu的移动端控制逻辑。
2. 回退Uber Menu至兼容版本
若当前Uber Menu版本与Woodmart v7.4.2不兼容:
- 先导出Uber Menu的配置备份
- 卸载当前版本,安装此前能正常工作的版本(如官方标注兼容Woodmart v7.x的稳定版)
- 导入备份配置后测试移动端菜单功能
3. 自定义JS修复调用错误
通过子主题覆盖冲突逻辑:
- 若未使用子主题,先创建并启用子主题
- 在子主题目录新建
js/custom.js文件,添加代码:
jQuery(document).ready(function($){ // 修复Uber Menu移动端触发的length报错 $('.ubermenu-responsive-toggle').on('click', function(e){ e.preventDefault(); var $menu = $(this).closest('.ubermenu').find('.ubermenu-main'); if(typeof $menu !== 'undefined' && $menu.length){ $menu.toggleClass('ubermenu-active'); } }); });
- 在子主题
functions.php中添加脚本引入:
function woodmart_child_enqueue_custom_js() { wp_enqueue_script( 'woodmart-child-custom', get_stylesheet_directory_uri() . '/js/custom.js', array( 'jquery' ), '1.0', true ); } add_action( 'wp_enqueue_scripts', 'woodmart_child_enqueue_custom_js', 999 );
这段代码会先检查菜单元素是否存在,再调用length属性,避免未定义报错。
4. 清除所有缓存
修复完成后,清除WordPress后台缓存、浏览器本地缓存及CDN缓存(若使用),确保新脚本生效。
内容的提问来源于stack exchange,提问作者konkuj
相关产品推荐
相关产品推荐

