使用$POST->POST_PARENT时尝试获取非对象的属性

时间:2013-09-24 作者:Harish Chouhan

我已将debug设置为true,并使用条件标记显示不同的横幅,例如:

<?php

if ( is_page( \'about\' ) || \'2\' == $post->post_parent ) {    
    // the page is "About", or the parent of the page is "About"
    $bannerimg = \'about.jpg\';

} elseif ( is_page( \'learning\' ) || \'56\' == $post->post_parent ) {  
    $bannerimg = \'teaching.jpg\';

} elseif ( is_page( \'admissions\' ) || \'15\' == $post->post_parent ) { 
    $bannerimg = \'admissions.jpg\';

} else { 
    $bannerimg = \'home.jpg\'; // just in case we are at an unclassified page, perhaps the home page
}   

?>
这会导致如下错误:

[24-Sep-2013 00:03:32] PHP Notice:  Trying to get property of non-object in D:\\Clients\\project1\\www.project1.dev\\wp-content\\themes\\custom_v1\\header.php on line 100
删除$post->post\\u parent修复了PHP通知。如果我做错了什么,有人能告诉我吗?

Location of this code:

我在标题中使用了类似于上面的代码结构。php文件。这不在任何post循环内。我在上面粘贴的成本来自http://codex.wordpress.org/Conditional_Tags

Purpose of my code:根据用户所在的页面,我需要显示不同的横幅。因此,每个页面及其子页面都有相同的横幅。

if ( is_page(\'114\') || $post->post_parent == \'114\' ) { }
甚至上面的代码也会生成错误。不确定为什么$post->post\\u Parents不被视为对象。

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

@kaiser 答案为您提供了解决方案。我从你的评论中看出你不明白,所以我对他的答案投了赞成票,并将其翻译成代码:

<?php
$bannerimg = \'home.jpg\';
$post = is_singular() ? get_queried_object() : false;
if ( ! empty($post) && is_a($post, \'WP_Post\') ) {
  if ( \'about\' == $post->post_name || \'2\' == $post->post_parent ) {    
    $bannerimg = \'about.jpg\';
  } elseif ( \'learning\' == $post->post_name || \'56\' == $post->post_parent) ) {  
    $bannerimg = \'teaching.jpg\';
  } elseif ( \'admissions\' == $post->post_name || \'15\' == $post->post_parent ) { 
    $bannerimg = \'admissions.jpg\';
  }
}

SO网友:kaiser

正常地$post 应该是object 这是一个instanceof WP_Post. 这个object 通常默认值为0 如果

没有设置父对象,帖子类型没有层次结构,因此这里唯一可以做的就是没有正确设置帖子对象。确保你在一个循环中,打过电话the_post()$custom_query->the_post() 或已使用setup_postdata( $post );.

顺便说一句,如果你有if/elseif/else, 通常可以避免使用else,因为它类似于switch. 刚刚设置好$bannerimg = \'foo\';if.

结束

相关推荐

Posts2post使用Connected_Items数组问题进行查询

My setup is as follows我有一个名为“events”的自定义帖子类型和一个名为“genres”的自定义帖子类型,我将其与scribu的Posts2Posts插件链接。每个事件可以有多个类型链接到它。What I would like to do在事件页面上,我想根据当前事件的类型显示其他相关事件。我认为我应该做什么运行一个查询,获取当前事件的所有类型ID,并在第二个查询中传递这些ID,该查询将查找具有一个或多个此类类型链接的所有事件。我有一个p2p查询,希望在连接的\\u项中输出具有一