Нужно ли использовать Цикл на страницах?

8

Я пишу свою первую тему WordPress и у меня есть вопрос об использовании The Loop в шаблонах страниц. Шаблоны страниц, на которые я смотрел, в основном повторяют один и тот же шаблон (пример из Twenty Twelve):

<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; // end of the loop. ?>

Но с страницей будет связан только один пост, поэтому итерации по ним кажутся ненужными. Шаблон моей страницы более читабелен и работает нормально:

<?php
the_post();
the_title('<h1>', '</h1>');
the_content();
?>

Это хорошая практика? Есть ли минусы?

Джейми Иде
источник

Ответы:

5

Согласно Руководству по теме , должны использоваться полные циклы, даже на отдельных шаблонах.

Полные циклы должны использоваться во всех шаблонах. Просто звонить the_post()по шаблону, как single.phpили page.phpнедостаточно.

Так что да, лучше всего использовать полные циклы.

Дейв Ромси
источник
9

Единственная потенциальная (edit: функциональная) проблема, которую я вижу, состоит в том, что loop_endдействие не будет вызвано, если вы не вызовите have_posts()после последнего the_post(), поэтому все, что связано с этим действием, не будет запущено.

На практике, я делал это таким образом в клиентских темах и никогда не сталкивался с проблемой, но это зависит от того, какие плагины могут быть использованы и подключены ли они к чему-либо loop_end.

Milo
источник
Согласно Руководству по теме , должны использоваться полные циклы, даже на отдельных шаблонах. «Полные циклы должны использоваться во всех шаблонах. Просто вызова the_post () в шаблоне, таком как single.php или page.php, недостаточно». Так что да, лучше всего использовать полные циклы.
Дейв Ромси,
Вы, вероятно, должны добавить это в качестве ответа. это необходимо, если вы хотите, чтобы ваша тема была принята и распространена на WP.com или org.
Майло
Хорошо, спасибо. Я буду. Я думал, что вы покрыли это своим ответом, поэтому я подумал, что я просто дополню это тем лакомым кусочком. Я никогда не думал о точке действия loop_end, которую вы подняли. Хороший звонок там.
Дейв Ромси
Хороший вопрос, я согласен с тем, что согласно документам цикл необходим во всех файлах шаблонов, но я думаю, что оба ответа не объясняют ПОЧЕМУ. В частности, почему необходимо запускать the_post () внутри page.php, поскольку этот файл вообще не должен отображать никаких сообщений!
GyRo
1
@GyRo страница - это тип сообщения. Это необходимо, поскольку он устанавливает данные, необходимые для правильной работы тегов шаблона.
Майло