如何解决WordPress更新中的‘Undefined variable’与‘Attempt to read property’警告
解决WordPress 6.2.2的自动更新与本地化相关PHP警告问题
问题梳理
当前运行WordPress 6.2.2本地化版本,出现两类关键警告:
/volume1/web_packages/wordpress/wp-admin/includes/class-wp-automatic-updater.php第175行:Undefined variable $checkout,导致自动更新功能失效/volume1/web_packages/wordpress/wp-admin/update-core.php多处出现Attempt to read property "xxx" on bool错误,涉及current、locale、response等属性读取
已尝试替换核心文件、修改脚本但无效。
解决方案
1. 排查本地化语言包问题
这类read property on bool错误通常是WordPress无法正确获取本地化数据(返回布尔值而非预期对象)导致的:
- 进入后台「设置→常规」,确认「站点语言」设置正确,先临时切换为英文,保存后再切回目标本地化语言
- 手动删除
wp-content/languages目录下的所有文件,重新进入「仪表盘→更新」,系统会自动重新下载安装对应语言包 - 检查
wp-config.php中是否有自定义WPLANG或WP_LOCALE常量,若有注释掉后测试
2. 禁用第三方代码干扰
$checkout未定义和属性读取错误可能是主题/插件修改了核心更新流程:
- 临时重命名
wp-content/plugins目录为plugins-temp,禁用所有插件 - 切换到WordPress默认主题(如Twenty Twenty-Three)
- 刷新更新页面,查看警告是否消失。如果消失,逐个恢复插件/主题,定位问题来源
3. 临时修复核心文件警告(仅应急,不推荐长期修改核心)
- 修复
class-wp-automatic-updater.php第175行:在该行前添加$checkout = null;,定义未声明的变量 - 修复
update-core.php属性读取错误:在所有读取属性的代码前增加判断,比如将$wp_version = $updates->current;改为:
同理,所有涉及$wp_version = is_object($updates) ? $updates->current : get_bloginfo('version');$updates->locale、$updates->response的地方,都先判断is_object($updates)再读取属性
4. 检查服务器PHP版本兼容性
WordPress 6.2.2要求PHP版本不低于7.4,若服务器PHP版本过低(如7.3及以下),可能出现这类兼容性警告。联系主机服务商升级PHP版本,或在主机面板中自行切换。
5. 完整覆盖核心文件(确保文件完整性)
下载官方WordPress 6.2.2安装包,解压后删除wp-content目录和wp-config-sample.php,将剩余文件上传覆盖到服务器对应目录,确保核心文件无损坏或缺失。
内容的提问来源于stack exchange,提问作者David Li
相关产品推荐
相关产品推荐

