Возвращает цикл в WordPress

#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.