如何修复WordPress WooCommerce的Uncaught Error错误
WooCommerce激活时出现“Uncaught Error: Attempt to assign property "translations" on null”的解决方案
错误原因
这个错误出现在WooCommerce的class-wc-helper-updater.php文件第81行,核心是代码尝试给null对象的translations属性赋值,常见触发场景:
- WordPress的站点插件更新缓存(site transient)损坏,导致WooCommerce Helper获取到的更新数据为空
- WooCommerce Helper组件初始化失败,可能是版本不兼容、文件残留问题(即使重装插件,缓存未清理也会遗留故障)
- 第三方插件/主题修改了
pre_set_site_transient_update_plugins过滤器,干扰了插件更新数据的正常返回
修复步骤
1. 清除插件更新缓存
这是最常见的解决方法,直接删除损坏的站点缓存:
- 代码临时方案:在当前主题的
functions.php末尾添加以下代码,刷新插件页面后立即删除这段代码:add_action( 'admin_init', function() { delete_site_transient( 'update_plugins' ); } ); - WP CLI方案:如果服务器支持命令行,执行:
wp transient delete update_plugins
2. 校验版本兼容性
确保WooCommerce版本与当前WordPress版本完全匹配:
- 若使用最新版WordPress,同步升级WooCommerce到官方稳定版;若使用旧版WP,选择对应兼容的WooCommerce版本。
3. 排查插件/主题冲突
- 先停用所有非WooCommerce的插件,激活WooCommerce看错误是否消失
- 若错误消失,逐个重新激活插件,找到引发冲突的插件后,要么更新该插件,要么替换为同类无冲突插件
- 切换到WordPress默认主题(如Twenty Twenty-Four),验证是否是主题代码干扰导致的问题
4. 临时修复Helper文件(应急方案)
如果以上方法暂时无效,可临时修改代码避免错误:
找到文件/wp-content/plugins/woocommerce/includes/admin/helper/class-wc-helper-updater.php第81行,在赋值前增加null检查:
原代码:
$update->translations = $translations;
修改为:
if ( isset( $update ) && is_object( $update ) ) { $update->translations = $translations; }
⚠️ 注意:此修改会在WooCommerce更新时被覆盖,仅作为临时应急,后续仍需找到根本原因。
5. 重置WooCommerce Helper连接
若错误与WooCommerce.com服务连接有关:
进入后台「WooCommerce > 设置 > 高级 > WooCommerce.com」,断开当前账号连接后重新登录授权。
内容的提问来源于stack exchange,提问作者Savvy Sage
相关产品推荐
相关产品推荐

