WordPress门户页加载异常求助:仅切回标签或开Dev Tools可加载
WordPress门户页预加载器失效排查与修复方案
问题概述
主站运行正常,但门户页预加载器无法加载内容,仅在切换浏览器标签切回或打开开发者工具时恢复正常。报错信息如下:
Uncaught TypeError: Cannot read properties of undefined (reading 'class_group') at HTMLOptGroupElement.<anonymous> (jquery.minimalect.min.js?ver=1.0:6:5819) at Function.each (jquery-3.6.1.min.js?ver=3.6.1:2:3003) at e.<computed>.each (jquery-3.6.1.min.js?ver=3.6.1:2:1481) at i._parseSelect (jquery.minimalect.min.js?ver=1.0:6:5773) at i._init (jquery.minimalect.min.js?ver=1.0:6:1747) at new i (jquery.minimalect.min.js?ver=1.0:6:215) at HTMLSelectElement.<anonymous> (jquery.minimalect.min.js?ver=1.0:6:11349) at Function.each (jquery-3.6.1.min.js?ver=3.6.1:2:3003) at e.<computed>.each (jquery-3.6.1.min.js?ver=3.6.1:2:1481) at e.fn.<computed> [as minimalect] (jquery.minimalect.min.js?ver=1.0:6:11155) (index):130 Uncaught TypeError: Cannot read properties of null (reading '1') at window.onerror ((index):130:83) /wp-admin/admin-ajax.php:1 Failed to load resource: the server responded with a status of 500 ()
切换至TwentyTwentyTwo主题后恢复正常,确认问题出自当前主题代码。
排查与修复步骤
1. 修正Minimalect初始化时机
报错源于class_group属性未定义,结合"切标签/开DevTools才加载"的现象,大概率是主题在DOM未完全渲染时就初始化了Minimalect插件。
- 找到主题中调用
minimalect()的代码,用$(document).ready()包裹,确保DOM加载完成后再执行初始化:$(document).ready(function() { // 仅针对门户页的下拉选择器初始化 var $portalSelect = $('.portal-page select'); if ($portalSelect.length) { $portalSelect.minimalect({ // 显式配置class_group参数,避免未定义报错 class_group: 'minimalect-group' }); } }); - 若主题使用异步加载脚本,需确保Minimalect依赖的jQuery加载完成后再执行初始化逻辑。
2. 修复admin-ajax.php 500服务器错误
500错误是服务器端问题,需定位具体原因:
- 开启WordPress错误日志:在
wp-config.php中添加以下代码,日志文件将生成在wp-content/debug.log中:define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); - 查看日志中
admin-ajax.php的具体报错,常见原因包括:- Ajax回调函数未定义或存在语法错误
- 权限不足导致数据库查询失败
- 主题函数中调用了不存在的WordPress核心函数
- 检查主题中注册Ajax的代码,确保
wp_ajax_和wp_ajax_nopriv_钩子的回调函数正确定义,且末尾执行die():add_action('wp_ajax_load_portal_content', 'load_portal_content_callback'); add_action('wp_ajax_nopriv_load_portal_content', 'load_portal_content_callback'); function load_portal_content_callback() { // 业务逻辑处理 $content = get_portal_content(); echo json_encode($content); // 必须终止脚本执行 die(); }
3. 修复Minimalect兼容性问题
修改压缩版Minimalect代码无效时,替换为未压缩源码并添加容错判断:
- 替换主题中的
jquery.minimalect.min.js为未压缩版本,找到_parseSelect方法,添加属性存在性判断:_parseSelect: function() { var m = this; $('optgroup', m.$select).each(function() { // 容错:若options或class_group未定义,设置默认值 if (!m.options) m.options = {}; if (!m.options.class_group) m.options.class_group = 'minimalect-group'; var groupClass = m.options.class_group; // 后续原有逻辑... }); }
4. 禁用主题干扰性优化
- 临时禁用主题的JS压缩/合并功能,排查是否是压缩过程破坏了Minimalect的代码结构。
- 检查主题是否给jQuery添加了
defer或async属性,这可能导致Minimalect初始化时jQuery未就绪,可移除该属性测试。
内容的提问来源于stack exchange,提问作者eagle8
相关产品推荐
相关产品推荐

