标题中的WordPress查询不会重置并损坏其他循环

时间:2018-07-23 作者:Summer Developer

在标题中的模板部分中,我有以下代码:

$args = array(\'post_type\'=>\'weather_today\',\'orderby\'=>\'ID\',\'order\'=>\'ASC\',\'posts_per_page\'=>1);
$query = new WP_Query($args);
$html;
if ($query->have_posts()){
$posts = $query->posts;
foreach($posts as $post) {
$html = $post->post_content;
}
}
wp_reset_postdata();
?>
我的理解是wp_reset_postdata 根据以下回答,我需要重置查询:wp_reset_postdata() or wp_reset_query() after a custom loop?

我试过了wp_reset_query() 同样,但两者都不起作用,因为我的其他模板部分受到头代码的影响。例如,当我single.php 模板并执行以下操作:

while ( have_posts() ) : the_post();
the_title();
endwhile; 
我得到了weather_today 帖子类型标题,而不是single.php 邮递

我在我的category.php 通过这样做:

$current_category_id = get_query_var(\'cat\');
$current_category_obj = get_category($current_category_id);
$args = array(\'orderby\'=>\'ID\',\'order\'=>\'DSC\',\'posts_per_page\'=>8,\'cat\'=>$current_category_id);
$query = new WP_Query($args);
然后循环,但我不想继续讨论我的头查询没有重置的问题。我不知道有没有类似的工作single.php 看来做一个WP Query 在应该实例化自己的查询的模板文件上-例如single.php 应该关注给定url的单个帖子,或者它在内部的工作方式。

如何在标题中执行所需的查询,同时仍能使其他主题/模板文件按预期工作?

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

这里有两个问题。

首先,您没有正确使用循环。而不是foreach 使用while ( $query->have_posts() ) { $query->the_post(); //etc.

其次,在使用中foreach($posts as $post) 您正在覆盖全局$post变量,因此如果确实必须使用foreach,请使用其他变量名!

结束

相关推荐

如何链接到详细信息页面(single.php?)在wp_loop中

我进行了如下wp\\U查询。这是其中的一部分。这是可行的。$args = .....; $query = new WP_Query($args); while($query->have_posts() ) : $query->the_post(); ?> <div class=\"each\"> <h4><?php the_title(); ?> &