PHP 在 while 循环中设置两个内容不同的输出缓冲区

PHP setting up two output buffers with different contents in while loop

我有一个 Wordpress 网站,我正在尝试在 AJAX 调用中遍历我的 post,我想存储第一个 [=21] 的 HTML =] 在一个单独的变量循环中,而不是 post 的其余部分。我将如何设置输出缓冲区

if (have_posts()) :
  $i = 0;while(have_posts()): the_post();
    if ($i == 0):
      ob_start();
      get_template_part('templates/latest-post', get_post_format());
      $recent_post = ob_get_contents();
      ob_end_clean();
    else:
      ob_start();
      get_template_part('templates/remaining-posts', get_post_format());
      $remaining_posts = ob_get_contents();
      ob_end_clean();
    endif;
  $i++; endwhile;
endif;

这不起作用,因为每次迭代都会调用 ob_startob_clean,所以我最终在 $remaining_posts 变量中只有 1 个 post,但我不确定如何正确设置它。

您可以使用 .=:

连接该内容
// Initialize the remaining posts variable
$remaining_posts = '';

if (have_posts()) :
  $i = 0;while(have_posts()): the_post();
    if ($i == 0):
      ob_start();
      get_template_part('templates/latest-post', get_post_format());
      $recent_post = ob_get_contents();
      ob_end_clean();
    else:
      ob_start();
      get_template_part('templates/remaining-posts', get_post_format());

      // Concatenate
      $remaining_posts .= ob_get_contents();
      ob_end_clean();
    endif;
  $i++; endwhile;
endif;