未定义属性:WP_QUERY::$POST

时间:2013-06-19 作者:mantis

我正在进行元数据之间的一些比较,但在正确引用查询结果时遇到了一些问题。要建立的第一个查询$team_is_home 效果很好,但只要我尝试捕获帖子的ID$team_is_home这有点混乱,我收到警告:“未定义属性:WP\\u查询::$post”

$args = array(
       \'post_type\' => \'match_report\',
       \'post_status\' => \'publish\',
       \'meta_query\' => array(
           array(
                 \'key\' => \'report_home-select\',
                 \'value\' => $team_id,
                 \'compare\' => \'=\',
           ),
       )                                  
     );

    $hometeams = new WP_Query($args);       
    $team_is_home =  $hometeams->found_posts;
    $scorehome = get_post_meta($hometeams->post->ID, \'report_homescore\'); 
我应该如何参考$hometeams->post->ID 为了避免收到此警告?

3 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

首先post WP\\U查询的字段是当前帖子ID,而不是帖子对象。但我觉得你打电话之前不应该用它the_post() 方法

通常,您应该这样做:

$args = ...
$hometeams = new WP_Query( $args );
$teamishome = $hometeams->have_posts();
while ( $hometeams->have_posts() ) {
  $hometeams->the_post();
  $scorehome = get_post_meta($post->ID, \'report_homescore\', true); // you want only one meta, not all array I guess.
  ...
}

SO网友:s_ha_dum

如果你var_dump($hometeams); 你会看到的$hometeams->post 设置为查询结果中的第一篇文章$hometeams->the_post 跑步。WP_Query 如果结果集中有帖子,则自动初始化它。

当结果集为空时,会出现“Undefined Property”(未定义属性)警告,因此$hometeams->post 无法设置/初始化。

您需要检查是否已填充$hometeams->post 在尝试使用它之前。如果您使用while ( $hometeams->have_posts() ) { 如一个答案所示,或foreach($hometeams->posts as $key => $post){ 就像在另一个循环中一样$hometeams->posts 因此,要避免与$hometeams->post 彻底地

另一种选择是。。。

if (!empty($hometeams->post)) {
  $scorehome = get_post_meta($hometeams->post->ID, \'report_homescore\'); 
}
。。。但是,由于您的查询不包含\'posts_per_page\' => 1 您需要使用一个循环,否则您将只能得到结果集中可能存在的大量帖子中的一篇。

确保运行reset_postdata 二次回路重置后$post, 或wp_reset_query 如有必要。

SO网友:ksr89

你可以用foreach 而且

$args = ...
$hometeams = new WP_Query( $args );
foreach($hometeams->posts as $key => $post){
    echo get_post_meta($post->ID, \'report_homescore\', true);
}

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post