Preciso usar o Loop nas páginas?

8

Estou escrevendo meu primeiro tema WordPress e tenho uma pergunta sobre o uso do The Loop nos modelos de página. Os modelos de página que observei seguem basicamente o mesmo padrão (exemplo de Twenty Twelve):

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

Mas uma página terá apenas uma postagem associada, portanto, a iteração pelas postagens parece desnecessária. Meu modelo de página é mais legível e parece funcionar bem:

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

Esta é uma boa prática? Existem desvantagens?

Jamie Ide
fonte

Respostas:

5

De acordo com o Guia de temas , loops completos devem ser usados, mesmo em modelos únicos.

Loops completos devem ser usados ​​em todos os modelos. Apenas chamar the_post()um modelo como single.phpou page.phpnão é suficiente.

Então, sim, é uma prática recomendada usar loops completos.

Dave Romsey
fonte
9

O único problema potencial (editar: funcional) que vejo é que a loop_endação não será chamada se você não ligar have_posts()depois da última the_post(), portanto, qualquer coisa ligada a essa ação não será executada.

Na prática, eu tenho feito isso dessa maneira em temas de clientes sob medida e nunca encontrei um problema, mas depende de quais plug-ins podem ser usados ​​e se eles conectam ou não algo loop_end.

Milo
fonte
De acordo com o Guia de temas , loops completos devem ser usados, mesmo em modelos únicos. "Loops completos devem ser usados ​​em todos os modelos. Apenas chamar the_post () em um modelo como single.php ou page.php não é suficiente." Então, sim, é uma prática recomendada usar loops completos.
21813 Dave Romsey
você provavelmente deve adicionar isso como resposta. é necessário se você deseja que seu tema seja aceito e distribuído no WP.com ou na organização.
Milo
Tudo bem, obrigado. Eu vou. Pensei que você tivesse coberto com sua resposta, então pensei em complementá-lo com esse boato. Eu nunca pensei sobre o ponto de ação loop_end que você mencionou. Boa ligação lá.
21813 Dave Romsey
Boa pergunta, entendo que, de acordo com a documentação, o loop é obrigatório em todos os arquivos de modelo, mas acho que as duas respostas não explicam POR QUE. Especificamente, por que é necessário executar o the_post () dentro do page.php, pois esse arquivo não deve exibir nenhuma postagem!
21418 GyRo
1
@GyRo uma página é um tipo de postagem. É necessário porque configura os dados que as tags de modelo precisam para funcionar corretamente.
Milo