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

报错Cannot use object of type WP_Term as array的WordPress分类处理问题

解决WordPress中"Cannot use object of type WP_Term as array"错误

这个错误我之前也碰到过,核心问题很明确:你把get_categories()返回的WP_Term对象当成数组来访问了,自然会触发类型错误。咱们一步步来修复:

问题根源

get_categories()函数返回的是一组WP_Term对象,不是字符串数组。你代码里直接用$category[0]去取首字符,相当于试图把对象当作数组来索引,这在PHP里是不允许的。

修复方案

1. 先取出分类名称字符串

要操作分类名称的字符,得先从WP_Term对象里取出名称属性,存到一个字符串变量里,再对这个变量做检查和处理:

$cat_name = $category->name;

2. 修正后的完整代码

我把你的代码补全并修正了问题,还加了边界检查避免名称过短的警告:

$option = ""; 
$categories = get_categories( array( 'hide_empty' => 0 ) ); 
foreach ( $categories as $category ) { 
    $cat_name = $category->name; // 先取出分类名称字符串
    // 检查名称长度足够,且首字符是下划线、次字符是数字
    if( strlen($cat_name) >= 2 && $cat_name[0] === '_' && ctype_digit( $cat_name[1] ) ) { 
        // 移除开头的下划线
        $processed_name = substr( $cat_name, 1 ); 
        $option .= '<option>'.$processed_name.'</option>';
    } else { 
        $option .= '<option>'.$category->name.'</option>';
    }
}

3. 额外注意事项

  • 所有WP_Term对象的属性都要通过->访问,比如分类ID是$category->term_id,别名是$category->slug,不要用数组索引的方式。
  • 如果特殊场景下确实需要把对象转成数组,可以用(array)$category,但这种做法不推荐,直接使用对象属性更清晰、性能也更好。

内容的提问来源于stack exchange,提问作者rob.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:12:38