我认为这里的问题可能与包含global$post语句以及使用get\\u posts有关。
实际上,您需要两次调用帖子,一次是使用新的WP\\u查询(只是为了检查返回的帖子数量),第二次是使用get\\u posts。
第一次检查时,它返回了主变量$myquery->posts下的帖子;
您也不想使用found\\u帖子,因为它似乎没有返回正确的数字。改用$myquery->post\\u count。
一旦去掉了global$post和get\\u posts,就可以更改found\\u posts变量,这样就不会再污染数据了。我用过这个:
$posts=new WP_Query(//array details);
if($posts->have_posts()) :
while($posts->have_posts()) : $posts->the_post();
$thispost=$posts->post;
// do stuff with the post, if you need things like the_permalink, use get_permalink($thispost->ID) instead.
endwhile;
endif;
而且它根本没有破坏我的数据。虽然这有点麻烦,因为您不能使用常规的\\u标题、内容等。。但无论如何,您都可以使用基于id的get过滤器——如果您需要针对常客的特定过滤器,您也可以在拉取的内容上使用它们。