老旧WordPress主题报错,无法确定插件诱因,求排查方向
错误信息翻译
致命错误:未捕获错误:无法将WP_Error类型的对象作为数组使用,位于
/data/1/2/12296225-4ed8-45bd-aa9c-0af189177859/web/wp-content/themes/orgafit/functions.php:614
调用栈:
#0/data/1/2/12296225-4ed8-45bd-aa9c-0af189177859/web/wp-includes/class-wp-hook.php(294):Orgafit_Funcs->cws_check_for_update(Object(stdClass))
#1/data/1/2/12296225-4ed8-45bd-aa9c-0af189177859/web/wp-includes/plugin.php(212):WP_Hook->apply_filters(Object(stdClass), Array)
#2/data/1/2/12296225-4ed8-45bd-aa9c-0af189177859/web/wp-includes/option.php(1931):apply_filters('pre_set_site_transient_update_themes', Object(stdClass), 'update_themes')
#3/data/1/2/12296225-4ed8-45bd-aa9c-0af189177859/web/wp-includes/update.php(635):set_site_transient('update_themes', Object(stdClass))
#4/data/1/2/12296225-4ed8-45bd-aa9c-0af189177859/web/wp-includes/update.php(841):wp_update_themes()
#5/data/1/2/12296225-4ed8-45bd-aa9c-0af189177859/web/wp-includes/class-...(调用栈截断)
排查与修复步骤
从错误日志能直接定位:问题出在Orgafit主题的更新检测逻辑,不是插件——主题的cws_check_for_update函数把WP_Error对象当成数组调用,大概率是主题代码和老旧WP版本不兼容导致的。
先修复主题问题:
- 通过FTP或主机文件管理器找到
/wp-content/themes/orgafit/functions.php,定位到第614行,注释掉或删除涉及cws_check_for_update的代码段; - 若不会改代码,直接通过FTP重命名Orgafit主题文件夹(比如改成
orgafit-old),站点会自动切换到默认主题,验证是否恢复正常。
- 通过FTP或主机文件管理器找到
若切换主题后仍报错,再排查插件:
- 重命名
/wp-content/plugins文件夹为plugins-old,禁用所有插件,看站点是否能访问; - 若恢复正常,改回
plugins文件夹,逐个启用插件,每启用一个刷新站点,直到找到触发错误的插件。
- 重命名
后续优化:
- 站点恢复后,优先备份整个站点,再升级WP核心到稳定版本(老旧版本兼容性和安全性都差);
- 若Orgafit是第三方/付费主题,联系开发者索要适配旧WP版本的补丁,或更换维护活跃的主题。
内容的提问来源于stack exchange,提问作者jondow

