PHP настраивает два выходных буфера с разным содержимым в цикле while

У меня есть сайт Wordpress, и я пытаюсь перебрать свои сообщения в вызове AJAX, и я хотел бы сохранить HTML для первого сообщения в цикле в отдельной переменной, чем остальные сообщения. Как мне настроить выходной буфер

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_start и ob_clean вызываются на каждой итерации, поэтому я получаю только 1 сообщение в переменной $remaining_posts, но я не уверен, как правильно его настроить.

Можете ли вы просто конкатенировать? $remaining_posts .= ob_get_contents(). Вероятно, также инициализируйте $remaining_posts пустой строкой перед циклом.

Chris Haas 08.04.2022 18:56

@ChrisHaas, это сработало отлично! Спасибо за предложение. Если вы хотите добавить его в качестве ответа, я был бы рад принять его.

user13286 08.04.2022 19:05
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете просто объединить этот контент, используя .=:

// 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;

Другие вопросы по теме