Devo usare The Loop sulle pagine?


8

Sto scrivendo il mio primo tema WordPress e ho una domanda sull'uso di The Loop nei modelli di pagina. I modelli di pagina che ho visto seguono sostanzialmente lo stesso modello (esempio tratto da Twenty Twelve):

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

Ma una pagina avrà un solo post associato ad essa, quindi l'iterazione tra i post sembra superflua. Il mio modello di pagina è più leggibile e sembra funzionare bene:

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

È una buona pratica? Ci sono degli aspetti negativi?

Risposte:


5

Secondo la Guida ai temi , è necessario utilizzare loop completi, anche su singoli modelli.

I loop completi devono essere utilizzati in tutti i modelli. Basta chiamare the_post()un modello come single.phpo page.phpnon è abbastanza.

Quindi sì, è una buona pratica usare loop completi.


9

L'unico potenziale problema (modifica: funzionale) che vedo è che l' loop_endazione non verrà chiamata se non si chiama have_posts()dopo l'ultima the_post(), quindi tutto ciò che è agganciato a quell'azione non verrà eseguito.

In pratica, l'ho fatto in questo modo su temi client su misura e non ho mai riscontrato un problema, ma dipende da quali plug-in possono essere utilizzati e se si agganciano o meno a qualcosa loop_end.


Secondo la Guida ai temi , è necessario utilizzare loop completi, anche su singoli modelli. "I loop completi devono essere utilizzati in tutti i template. Basta chiamare the_post () in un template come single.php o page.php non è sufficiente." Quindi sì, è una buona pratica usare loop completi.
Dave Romsey,

dovresti probabilmente aggiungerlo come risposta. è necessario se si desidera che il tema sia accettato e distribuito su WP.com o in organizzazione.
Milo,

Va bene, grazie. Lo farò. Pensavo che l'avessi coperto con la tua risposta, quindi ho pensato di integrarlo con quel bocconcino. Non avevo mai pensato al punto d'azione loop_end che hai sollevato. Buona chiamata lì.
Dave Romsey,

Bella domanda, non capisco che secondo la documentazione, il ciclo è un must in tutti i file modello, ma penso che entrambe le risposte non spiegano PERCHÉ. In particolare perché è necessario eseguire the_post () all'interno di page.php poiché questo file non dovrebbe visualizzare alcun post!
GyRo,

1
@GyRo una pagina è un tipo di post. È necessario perché imposta i dati necessari ai tag modello per funzionare correttamente.
Milo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.