WordPress访问widgets.php报错:调用null对象的have_posts()是什么原因?
错误触发原因
核心报错Call to a member function have_posts() on null的本质是调用该方法的查询对象为空,结合提供的代码和报错栈,具体触发原因分为三类:
- 类名大小写错误(最高概率):代码中写的实例化语句是
new WP_query,但WordPress核心的查询类正确命名为WP_Query,第二个单词首字母Q需要大写。在PHP类名大小写敏感的运行环境下,系统无法匹配到对应类,会导致$my_query实例化失败赋值为null,后续调用$my_query->have_posts()时就会抛出该错误。 - 核心类加载时机错误:自定义的
dg_recent_post_widget小工具的加载时机早于WordPress核心WP_Query类的加载时机,实例化时找不到对应类,导致$my_query赋值为null。 - 查询参数异常:构造查询参数时用到的
$numposts和$catid变量未定义、或传入了不符合规则的非法值,导致WP_Query初始化失败返回null。
内容的提问来源于stack exchange,提问作者EnmanuelGo
相关产品推荐
相关产品推荐

