使用带有‘field’=>‘id’的WP_QUERY时,‘尝试获取非对象的属性’

时间:2014-03-10 作者:Dre

为了加快查询速度,我使用以下参数:

$args = array(
    \'post_type\' => \'product\',
    \'fields\' => \'ids\',
);

$query = new WP_Query($args);
虽然这确实会像预期的那样返回一个ID数组,但我不断得到多个Trying to get property of non-object in /wp-includes/query.php 通知。即使我身体里什么都没有,这种情况也会发生while 除了the_post():

if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
endwhile;
endif;
是的the_post() 这是什么原因?知道我为什么收到这些通知吗?

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

the_post 从中放置下一个post对象$query->posts 在全球范围内$post 和电话setup_postdata, 假设$post 是一个post对象,因为它试图访问该对象的成员变量,这就是错误的来源。

在这种情况下$posts 只是一个ID数组,而不是post对象。如果要迭代结果,可以执行foreach 在…上$posts:

$args = array(
    \'post_type\' => \'product\',
    \'fields\' => \'ids\',
);
$query = new WP_Query($args);

if ($query->have_posts()):
    foreach( $query->posts as $id ):
        echo \'ID: \' . $id;
    endforeach;
endif;

结束

相关推荐

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

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