通过创建更多循环,可以根据需要创建任意数量的循环WP_Query
对象
$query = new WP_Query($args);
while ($query->have_posts()) :
// initialization for $inner_args & backup the current global $post
$inner_query = new WP_Query($inner_args);
while ($inner_query->have_posts()) :
// do something
endwhile;
// restore the global $post from the previously created backup
endwhile;
无论何时调用模板标记,如
the_title();
, 它显示循环中当前帖子的一些信息。但它如何知道哪个帖子是当前帖子?它是通过从全局postdata(存储在全局变量中)读取信息来完成的
$post
)
使用循环时,始终使用$query->the_post()
作为第一句话。此函数的作用是将全局数据从WP_Query
对象(以前的内容丢失)
在这里,当您调用内部循环时,当内部循环开始工作时,与外部循环相关的postdata丢失了。然后,在内部循环结束后使用的任何函数仍然只能查找内部循环的数据。
在解决方案中,在内容丢失之前,您首先将外部循环的数据保存在另一个变量中。然后循环按预期工作(删除所有外部循环数据)。
然后,当内循环的工作完成时,您现在需要使用外循环的数据,但由于内循环,数据丢失了。这是您获取以前保存的数据的位置;更换它。现在你回到了开始内环时的位置