在标题中的模板部分中,我有以下代码:
$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的单个帖子,或者它在内部的工作方式。
如何在标题中执行所需的查询,同时仍能使其他主题/模板文件按预期工作?
最合适的回答,由SO网友:Peter HvD 整理而成
这里有两个问题。
首先,您没有正确使用循环。而不是foreach
使用while ( $query->have_posts() ) { $query->the_post(); //etc
.
其次,在使用中foreach($posts as $post)
您正在覆盖全局$post变量,因此如果确实必须使用foreach,请使用其他变量名!