Muss ich The Loop auf Seiten verwenden?

8

Ich schreibe mein erstes WordPress-Theme und habe eine Frage zur Verwendung von The Loop in Seitenvorlagen. Die Seitenvorlagen, die ich mir angesehen habe, folgen im Grunde dem gleichen Muster (Beispiel aus Twenty Twelve):

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

Einer Seite ist jedoch nur ein Beitrag zugeordnet, sodass das Durchlaufen der Beiträge nicht erforderlich ist. Meine Seitenvorlage ist besser lesbar und scheint gut zu funktionieren:

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

Ist das eine gute Praxis? Gibt es Nachteile?

Jamie Ide
quelle

Antworten:

5

Laut Theme Guide sollten vollständige Schleifen verwendet werden, auch für einzelne Vorlagen.

In allen Vorlagen müssen vollständige Schleifen verwendet werden. Es reicht nicht aus, nur the_post()eine Vorlage wie single.phpoder aufzurufen page.php.

Ja, es ist eine bewährte Methode, vollständige Schleifen zu verwenden.

Dave Romsey
quelle
9

Das einzige potenzielle (Bearbeiten: Funktionale) Problem, das ich sehe, ist, dass die loop_endAktion nicht aufgerufen wird, wenn Sie nicht have_posts()nach dem letzten aufrufen the_post(), sodass alles, was mit dieser Aktion verbunden ist, nicht ausgeführt wird.

In der Praxis habe ich dies in maßgeschneiderten Client-Themen so gemacht und bin nie auf ein Problem gestoßen, aber es hängt davon ab, welche Plugins verwendet werden können und ob sie etwas anhängen oder nicht loop_end.

Milo
quelle
Laut Theme Guide sollten vollständige Schleifen verwendet werden, auch für einzelne Vorlagen. "In allen Vorlagen müssen vollständige Schleifen verwendet werden. Es reicht nicht aus, nur the_post () in einer Vorlage wie single.php oder page.php aufzurufen." Ja, es ist eine bewährte Methode, vollständige Schleifen zu verwenden.
Dave Romsey
Sie sollten das wahrscheinlich als Antwort hinzufügen. Dies ist erforderlich, wenn Sie möchten, dass Ihr Thema auf WP.com oder org akzeptiert und verbreitet wird.
Milo
Okay, danke. Ich werde. Ich dachte, Sie hätten es mit Ihrer Antwort abgedeckt, also dachte ich, ich würde es nur mit diesem Leckerbissen ergänzen. Ich hatte nie über den Aktionspunkt loop_end nachgedacht, den Sie angesprochen haben. Guter Anruf dort.
Dave Romsey
Gute Frage, ich verstehe nicht, dass gemäß der Dokumentation die Schleife ein Muss in allen Vorlagendateien ist, aber ich denke, beide Antworten erklären nicht WARUM. Insbesondere, warum es notwendig ist, the_post () in page.php auszuführen, da diese Datei überhaupt keinen Beitrag anzeigen soll!
GyRo
1
@ GyRo eine Seite ist eine Art Beitrag. Dies ist erforderlich, da Daten eingerichtet werden, die für die ordnungsgemäße Funktion von Vorlagen-Tags erforderlich sind.
Milo