对POST对象数组运行循环

时间:2016-11-20 作者:dotancohen

给定一个Post对象数组,如何初始化The Loop 这样就可以使用常见的循环函数:

$posts = array( /* WP_Post, WP_Post, ... */);

while ( have_posts() ) {
    the_post();
    the_title();
}
我知道我可以简单地在数组元素上循环,并将每个元素的ID传递给每个函数,但是由于我无法控制的原因,这里最好使用实际的Wordpress循环。

数组是由一个我无法更改的函数提供的。为了讨论的目的,它可能来自unserialize().

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

我在我的一个自定义窗口小部件中使用了它:

global $post;
$posts = array( /* WP_Post, WP_Post, ... */);
while (list($i, $post) = each($posts)) :
    setup_postdata($post);
    // use the template tags below here
    if(has_post_thumbnail()):
        ?><div class="featured_image_wrap"><?php
            the_post_thumbnail();
        ?></div><?php
    endif;
    the_title();
endwhile;
// don\'t forget to restore the main queried object after the loop!
wp_reset_postdata();

SO网友:Benoti

你需要修改整个条款。

 while ( $posts->have_posts() ) {
     the_post();
     the_title();
 }
但是,它不能工作,因为如果$posts 来自新的WP\\U查询()。

循环通过$posts 数组,可以执行以下操作

  foreach($posts as $post){
         echo $post->post_title;
         if($post->ID != 123){
              echo $post->post_content;
         }

  }
你写下你可以控制查询,在插件的源代码中搜索apply_filters , 也许有办法过滤这些数据。

希望有帮助!

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>