WordPress网站出现slug属性读取错误,新手求修复方法
解决WordPress页面“Attempt to read property 'slug' on array”报错
问题原因
- 参数拼写错误:代码中
get_terms的参数taxonomoy是拼写错误,正确应为taxonomy。这个错误会导致get_terms无法正确获取分类术语,返回的$wpdmcategory_terms可能包含数组而非预期的WP_Term对象。 - 缺乏错误与类型检查:没有验证
get_terms的返回结果,也未确认遍历元素是否为WP_Term对象,直接访问$t->slug就会触发报错。
修复代码
//include categories: multi select $wpdmcategory_terms = get_terms(['taxonomy' => 'wpdmcategory']); // 验证返回结果有效且为数组 if (!is_wp_error($wpdmcategory_terms) && is_array($wpdmcategory_terms)) { foreach($wpdmcategory_terms as $k => $t){ // 确认当前元素是WP_Term对象再操作 if ($t instanceof WP_Term) { $wpdmcategory_terms[$t->slug] = $t->name; unset($wpdmcategory_terms[$k]); } } }
修复说明
- 修正
taxonomy参数的拼写错误,确保get_terms能正确查询wpdmcategory分类的术语。 - 添加
is_wp_error检查:get_terms在查询失败时会返回WP_Error对象,提前过滤避免后续错误。 - 增加对象类型判断:只有当
$t是WP_Term对象时才访问slug和name属性,彻底避免“读取数组属性”的警告。
内容的提问来源于stack exchange,提问作者Sollène Paloma
相关产品推荐
相关产品推荐

