注意:尝试在第277行的/wp-content/themes/my-theme/header.php中获取非对象的属性

时间:2018-10-01 17:13:07

标签: php wordpress

如果您位于“服务”页面上,或者属于页面ID 1531、1567或1533的子页面,则下面的代码用于显示随机横幅图像。

但是,当我点击网站上未找到的页面时,在横幅图片上方出现了该问题的标题中提到的错误。

下面是正在使用的代码

<?php

global $post;
$n = rand(1,7);

// error on the following line
if( is_page('Services') || $post->post_parent == 1531 || $post->post_parent == 1567 || $post->post_parent == 1533 ) : ?>
    <div class="banner-sub<?php echo ' banner' . $n; ?> rand"></div><!-- .banner -->
<?php else : ?>
    <div class="banner-sub overlay"></div><!-- .banner -->
<?php endif; ?>

2 个答案:

答案 0 :(得分:0)

您似乎无权访问$post变量,可以在this answer中找到何时可以访问它。

我还建议针对post_parent条件使用数组:

$excluded = [1531, 1533, 1567];

if (is_page('Services') || in_array($post->post_parent, $excluded)) {
    //
}

答案 1 :(得分:0)

在404页上,没有加载任何帖子,因此$post可能是null,它是非对象,并且没有诸如post_parent之类的属性。

您需要对此进行测试:

if ( is_page('Services') || ( $post && ( $post->post_parent == 1531 || $post->post_parent == 1567 || $post->post_parent == 1533 ) ) ) : ?>