You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP报错:Trying to get property of non-object 问题排查求助

问题诊断与修复方案

首先,这个Trying to get property of non-object报错的直接原因非常明确:你代码中的$recipe_difficulty变量并不是一个对象,但你却尝试访问它的term_id和name属性。

为什么会出现这个问题?

在WordPress场景下,这个变量大概率是从自定义分类法(比如recipe_difficulty)获取的术语结果,但可能存在几种触发报错的情况:

  • 调用get_terms()这类获取术语的函数时,返回了WP_Error错误对象,而非预期的术语对象数组
  • 遍历的数组中混入了非对象元素(比如false、null或者普通数组)
  • 目标术语本身不存在,导致获取到的是无效值

修复代码的方案

你需要在访问对象属性之前,先做有效性检查,确保$recipe_difficulty是合法对象。推荐两种严谨的写法:

方案1:通用对象检查

// 先确认$recipe_difficulty是对象,再访问属性
if (is_object($recipe_difficulty)) {
    $recipe_difficulties_str .= "{$recipe_difficulty->term_id}:{$recipe_difficulty->name},";
}

方案2:针对WordPress术语的精准检查

因为这里处理的是食谱难度术语,更精准的方式是检查它是否是WordPress术语的标准对象类型WP_Term:

// 确保是WP_Term对象,避免误判其他类型的对象
if ($recipe_difficulty instanceof WP_Term) {
    $recipe_difficulties_str .= "{$recipe_difficulty->term_id}:{$recipe_difficulty->name},";
}

额外排查建议

如果想从根源解决问题,你可以追踪$recipe_difficulty变量的来源(比如它来自哪个函数的返回值,或是遍历的哪个数组),检查:

  • 是否在调用get_terms()时没有处理错误情况?可以用is_wp_error()先判断返回结果
  • 遍历的数组是否被正确初始化,有没有混入无效值?

内容的提问来源于stack exchange,提问作者Alan Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:44:06