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

WordPress站点报错:Trying to get property 'ID' of non-object 求助

解决WordPress页面报错:Notice: Trying to get property 'ID' of non-object

报错原因

报错代码位于innerpages.php第20行的$page->ID,核心问题是$page变量未被正确定义为有效WP_Post对象,导致调用->ID属性时触发非对象报错。

修复方案

以下三种方案任选其一,根据实际需求选择:

方案1:使用WordPress内置函数get_the_ID()(最推荐)

直接用get_the_ID()获取当前页面ID,无需依赖未定义的$page变量,修改代码如下:

get_header(); ?>
<?php $url = wp_get_attachment_url( get_post_thumbnail_id(get_the_ID()), 'full' ); ?>
<section class="MainBanner position-relative bg-image" style="background-image: url('<?php echo $url; ?>')">   
&nbsp;
</section>
  <?php if(is_page(158)) { ?>
  <section id="InternalPage">
<div class="container">

方案2:使用全局$post对象

如果需要依赖对象调用,先声明全局$post对象(WordPress页面模板默认已初始化该对象):

get_header(); ?>
<?php 
global $post;
$url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'full' ); 
?>
<section class="MainBanner position-relative bg-image" style="background-image: url('<?php echo $url; ?>')">   
&nbsp;
</section>
  <?php if(is_page(158)) { ?>
  <section id="InternalPage">
<div class="container">

方案3:增加容错判断(避免报错同时兼容异常情况)

如果不确定$page变量是否存在,先做有效性判断,防止报错:

get_header(); ?>
<?php 
$url = '';
// 先判断$page是否为有效对象
if (isset($page) && is_object($page) && property_exists($page, 'ID')) {
    $url = wp_get_attachment_url( get_post_thumbnail_id($page->ID), 'full' ); 
}
?>
<section class="MainBanner position-relative bg-image" style="background-image: url('<?php echo $url; ?>')">   
&nbsp;
</section>
  <?php if(is_page(158)) { ?>
  <section id="InternalPage">
<div class="container">

说明

  • 方案1是最稳妥的选择,get_the_ID()是WordPress专为获取当前页面/帖子ID设计的函数,无需额外变量声明。
  • 方案2适合需要操作完整WP_Post对象的场景,但需确保全局$post对象在当前模板中可用。
  • 方案3适合保留原$page变量逻辑但需要避免报错的场景,同时可根据需求添加默认图片等 fallback 逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:21:22