解决WordPress插件sw_core的PHP致命错误问题
WordPress主题选项菜单PHP致命错误修复指南
错误详情
PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /home/audiocompe/public_html/wp-content/plugins/sw_core/inc/options/options.php:656 Stack trace: #0 /home/audiocompe/public_html/wp-includes/class-wp-hook.php(308): SW_Options->_options_page_html('') #1 /home/audiocompe/public_html/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters('', Array) #2 /home/audiocompe/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /home/audiocompe/public_html/wp-admin/admin.php(259): do_action('appearance_page...') #4 /home/audiocompe/public_html/wp-admin/themes.php(10): require_once('/home/audiocomp...') #5 {main} thrown in /home/audiocompe/public_html/wp-content/plugins/sw_core/inc/options/options.php on line 656
已尝试操作
- 将PHP内存限制调至推荐值以上
- 禁用所有其他插件,仅保留
sw_core,问题仍未解决
错误原因
options.php第656行的代码错误地把字符串当作数组进行偏移访问(比如用$var['key']的格式),但该变量实际存储的是字符串值,导致类型不匹配触发致命错误。
修复步骤
方法1:修改插件代码(直接解决代码逻辑问题)
- 通过主机控制面板的文件管理器或FTP工具,找到路径
/wp-content/plugins/sw_core/inc/options/options.php - 打开文件,定位到第656行
- 找到类似
$xxx['yyy']的代码(比如$options['custom_setting']),修改为先判断变量类型再访问:
// 原代码示例(仅供参考,以实际代码为准) $value = $options['custom_setting']; // 修改后代码 $value = ''; if (is_array($options) && isset($options['custom_setting'])) { $value = $options['custom_setting']; }
- 保存文件,刷新主题选项页面测试
方法2:重置插件配置数据(解决数据损坏问题)
如果是插件存储的配置数据异常(本该是数组却存成了字符串),可尝试重置:
- 登录主机的phpMyAdmin工具,找到你的WordPress数据库
- 找到
wp_options表(前缀可能不是wp_,以你的站点实际设置为准) - 在搜索框输入
sw_core相关的选项名称(比如sw_core_options),找到对应记录 - 删除该记录,或把
option_value字段重置为空数组格式a:0:{} - 返回WordPress后台,重新打开主题选项菜单,插件会自动生成默认配置
内容的提问来源于stack exchange,提问作者Brad Mordics
相关产品推荐
相关产品推荐

