2014-01-21 9 views
6

In der Wordpress Theme-Entwicklung können wir single.php verwenden, um den spezifischen einzelnen Beitrag zu zeigen. zu diesem Zweck die gängige Praxis istWarum brauche ich eine wp-Schleife in single.php

<?php if (have_posts()) : ?> 
<?php while (have_posts()) : the_post(); ?> 
    <?php the content();?> 
<?php endwhile; ?> 
<?php endif; ?> 

Warum brauchen Looping ich einen einzigen Beitrag zu zeigen? Kann jemand einen gültigen Grund angeben?

+0

Siehe https://wordpress.stackexchange.com/questions/198704/should-i-use-loop-in-the-single-php-file –

Antwort

2

Die WordPress Loop instanziiert einige Funktionen wie the_title(), the_content() und others.

Mit anderen Worten, Ihr Beitrag ist geladen in dieser Schleife, und die Schleife ist einmal durchlaufen, wenn Sie auf einem einzigen Beitrag sind. Obwohl es vielleicht seltsam ist, eine Schleife zu haben, ist es tatsächlich ziemlich nützlich.

WordPress verwendet eine template hierarchy, mit der Sie auswählen können, welche Vorlage für einen bestimmten Post/eine bestimmte Seite geladen werden soll. In Ihrem single.php wird die Schleife einmal ausgeführt. Aber wenn Sie keine single.php Datei haben, wird WordPress stattdessen index.php für den gleichen Beitrag verwenden.

Aus Gründen der Konsistenz ist es hilfreich, eine Schleife zu verwenden, die für eine beliebige Anzahl von Posts funktioniert. Sonst hätten Sie in Ihrem Fall index.php einen Fall für einen Post und einen anderen Fall für mehrere Posts benötigt und es wäre schwierig, eine konsistente Templating-Methode beizubehalten.

+12

Sie liegen hier falsch. Der Aufruf 'the_post()' macht das, was Sie gesagt haben. Nicht die ganze Schleife. Da es auch eine 'single.php' gibt, sind wir nicht in' index.php', daher brauchen wir diese Schleife nicht wirklich. Nur ein Aufruf an 'the_post()' – Odys

0

das war etwas, das mich seit Jahren getötet, und ich fand die Antwort: Nein, Sie brauchen nicht auf die LOOP in einzelne Seiten zu verwenden, die Sie gerade anrufen the_post(), und Sie haben alle erforderlichen Daten für

.... BUT .... 

Wenn Sie die Schleife nicht verwenden (while (have_posts()) ....) wird ein Hook "loop_end" nicht aufgerufen und wenn ein Plugin/Prozess eine Aktion auf diesem Hook hat, wird es nicht funktionieren. Aus Sicherheitsgründen sollten Sie also die Schleife verwenden.

Auch Leute fragen muss ich auf Existenz vor der Schleife überprüfen: if (have_posts())?

<? 
if(have_posts()): 
    while(have_posts()): 
     the_post(); 
     ..... 
    endwhile; 
endif 
?> 

Nein, Sie nicht

.... BUT .... 

Checking können Sie Kopf-/Titel vor der Schleife schließen und sie nicht zu haben, wenn die Schleife leer überprüfen müssen.

Verwandte Themen