#wordpress #loops #return
#wordpress #петли #Возврат
Вопрос:
У меня есть функция, которая отображает сообщения из категории:
function display_posts() {
if ( have_posts() ) :
query_posts('cat=5amp;posts_per_page=4');
while ( have_posts() ) : the_post();
$result = '<span>' . get_the_title() . '</span>';
return $result;
endwhile;
wp_reset_query();
endif;
}
Но он возвращает только одну статью, а не четыре. Но с этой функцией все работает хорошо:
function display_posts() {
if ( have_posts() ) :
query_posts('cat=5amp;posts_per_page=4');
while ( have_posts() ) : the_post();
echo '<span>' . get_the_title() . '</span>';
endwhile;
wp_reset_query();
endif;
}
Итак, как вернуть цикл из функции?
Ответ №1:
return
немедленно завершает работу функции. Если вы хотите объединить (объединить) все результаты вместе, вам нужно будет вернуться после цикла — что-то вроде этого:
function display_posts() {
$result = '';
if ( have_posts() ) :
query_posts('cat=5amp;posts_per_page=4');
while ( have_posts() ) : the_post();
$result .= '<span>' . get_the_title() . '</span>';
endwhile;
wp_reset_query();
endif;
return $result;
}
Обратите внимание на .
перед =
, который выполняет конкатенацию.
Но я сомневаюсь, что вам следует использовать query_posts()
— get_posts()
вероятно, лучший выбор. Взгляните на этот вопрос в WordPress stackexchange.