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

获取分类文章数时出现Undefined offset与non-object错误的解决方法

问题分析与修复方案

我来帮你拆解下这两个错误的根源,以及对应的修复方法:

错误原因解析

这两个错误其实是连锁反应:

  • Notice: Undefined offset: 0:说明你定义的$cats数组是空的,根本没有第0个元素——大概率是你的分类查询没返回任何结果(比如目标分类不存在、查询参数写错了,或者菜单项对应的不是分类类型)。
  • Notice: Trying to get property of non-object:因为$cats[0]本身就不存在,你却试图访问它的count属性,自然会触发这个错误。

修复步骤

第一步:先做有效性校验

在访问$cats[0]->count之前,必须先确认$cats数组非空,且第一个元素是有效的对象。把你的判断代码改成这样:

// 先确保数组非空、第一个元素是对象,再判断文章数量
if (!empty($cats) && is_object($cats[0]) && $cats[0]->count > 0) {
    // 你原本显示分类文章数量的代码逻辑
    echo '(' . $cats[0]->count . ')';
}

第二步:回溯$cats的获取逻辑

你还要检查一下$cats是怎么来的?比如如果是通过WordPress函数(比如get_categories()、get_term_by())获取的,要确保参数正确,且先验证前置条件。举个常见的场景:如果是从菜单项中关联分类,要先确认菜单项对应的确实是分类对象:

// 假设你从菜单项元数据中获取分类ID
$term_id = get_post_meta($item->ID, '_menu_item_object_id', true);

// 先确认分类ID有效,再执行查询
if (!empty($term_id) && 'category' === $item->object) {
    $cats = get_categories(array('include' => $term_id));
    
    // 再执行刚才的有效性判断
    if (!empty($cats) && is_object($cats[0]) && $cats[0]->count > 0) {
        echo '(' . $cats[0]->count . ')';
    }
}

额外建议

  • 开发环境下保持PHP错误提示开启,方便快速定位问题;生产环境记得关闭错误输出,避免泄露站点信息。
  • 调用WordPress的函数时,养成先验证返回值的习惯——毕竟不是所有查询都能返回预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:14:15