У меня есть сайт 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
, но я не уверен, как правильно его настроить.
@ChrisHaas, это сработало отлично! Спасибо за предложение. Если вы хотите добавить его в качестве ответа, я был бы рад принять его.
Вы можете просто объединить этот контент, используя .=
:
// 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;
Можете ли вы просто конкатенировать?
$remaining_posts .= ob_get_contents()
. Вероятно, также инициализируйте$remaining_posts
пустой строкой перед циклом.