Was ist die beste Methode, um eigene Wordpress-Loops zu erstellen?

8

Es gibt anscheinend drei Möglichkeiten, um Inhalte aus Wordpress mit seinen integrierten Funktionen auszugeben, wobei WP_Query die empfohlene ist:

Was sind die Unterschiede zwischen ihnen? (Ich verstehe, dass WP_Query die Klasse ist, und die anderen beiden sind Methoden).

Was ist der sauberste Weg, um mehrere Schleifen auf derselben Seite zu haben, ohne dass sie sich gegenseitig stören?

Ich suche nach Beispielen, wie Sie Ihre WP-Loops programmieren; z.B. Ausgabe 2 separate Post-Listen nach Kategorie, mit Anhängen, Metadaten usw.

Dies ist die beste Referenz, die ich bisher gefunden habe:

meleyal 20.02.2009, 16:09
quelle

3 Antworten

5

Ich habe sowohl WP_Query als auch get_posts verwendet. Auf einer meiner Sidebar-Vorlagen verwende ich die folgende Schleife, um Beiträge aus einer bestimmten Kategorie anzuzeigen, indem benutzerdefinierte Felder mit einem Schlüssel von "category_to_load" verwendet werden, der den Kategorie-Slug- oder Kategorienamen enthält. Der eigentliche Unterschied liegt in der Implementierung beider Methoden.

Die Methode get_posts sieht in einigen meiner Vorlagen so aus:

%Vor%

Wo die WP_Query-Implementierung wie folgt aussieht:

%Vor%

Der Hauptunterschied besteht darin, dass Sie die globale $ post-Variable nicht zurücksetzen müssen und Sie die Post-Daten auch nicht durch Aufruf von setup_postdata ($ post) für jedes Post-Objekt einrichten müssen, wenn Sie WP_query verwenden. Sie können auch die schöne Funktion have_posts () für die Funktion WP_Query verwenden, die nicht mit get_posts () verfügbar ist.

Sie sollten die Funktion query_posts () nicht verwenden, es sei denn, Sie möchten dies wirklich tun, weil sie die Hauptschleife für die Seite ändert. Weitere Informationen finden Sie in den Dokumenten . Wenn Sie also eine spezielle Seite erstellen, auf der Ihr Blog angezeigt wird, kann das Aufrufen von query_posts die Schleife der Seite durcheinander bringen, weshalb Sie WP_Query verwenden sollten.

Das sind nur meine zwei Cent. Mein ultimativer Vorschlag, Ihre erste Wahl sollte WP_Query sein.

-Chris

    
Christopher Hazlett 21.02.2009, 17:33
quelle
3

Aus den WP-Dokumenten für get_posts:

  

get_posts () kann auch die Parameter von query_posts () übernehmen, da beide Funktionen jetzt denselben Datenbankabfragecode verwenden.

Der einzige Unterschied zwischen den beiden Funktionen besteht darin, dass get_posts ein Array mit Post-Records zurückgibt, während query_posts die Datensätze im Query-Objekt zum Abrufen durch die Template-Funktionen (has_posts, the_post usw.) speichert.

Beide verwenden das WP_Query-Objekt zum Ausführen der Abfrage.

Das Erstellen einer zweiten Schleife wird in den Wordpress-Dokumenten behandelt. Dort finden Sie einige Links zu anderen Beispielen für Mehrfachschleifen. Sie werden feststellen, dass jeder es anders macht, aber alle scheinen mit ihren Ergebnissen zufrieden zu sein.

    
Todd Rowan 20.02.2009 22:13
quelle
1

WP verwendet ein Objekt namens $wp_query für die Hauptschleife. Normalerweise sehen wir dieses Objekt nicht, weil es hinter have_posts() und the_post() verborgen ist, die nur Wrapper für sind $wp_query->have_posts() und $wp_query->the_post()

Wenn Sie die Hauptschleife ändern wollen, sollten Sie query_posts() vor der Schleife verwenden.

Wenn Sie eine andere Schleife möchten, können Sie das Objekt $wp_query mit query_posts() vor dieser neuen Schleife erneut verwenden. Dies kann bei Bedarf mehrmals durchgeführt werden.

Wenn Sie aus irgendeinem Grund das $ wp_query-Objekt um THEN herum behalten müssen, sollten Sie WP_Query verwenden. Und natürlich, weil have_posts() und the_post() Wrapper für $wp_query Objekt sind, können Sie sie nicht mit WP_Query verwenden. Sie sollten stattdessen $your_query_obj->have_posts() i.e.

verwenden %Vor%

Ein guter Fall, in dem WP_Query besser sein könnte als query_posts() ist eine linke Seitenleiste. Da die Code-Schleife für die Sidebar wahrscheinlich über die Hauptschleife gesetzt wird, hat ein query_posts() -Aufruf das Objekt $wp_query geändert und auch die Hauptschleife geändert. In diesem Fall, um query_posts() im Sidebar-Code zu verwenden, müssen Sie auch query_posts() vor der Hauptschleife verwenden, um den richtigen Inhalt für diese Schleife abzufragen.

Wenn also WP_Query für diesen Fall verwendet wird, bleibt $ wp_query und damit die Hauptschleife unberührt.

Aber noch einmal, für einen häufigen Fall ist query_posts() eine schöne Möglichkeit, Ihren Inhalt abzufragen:

%Vor%     
Julio Protzek 23.12.2009 19:33
quelle

Tags und Links