Anonim

Schnelle Aufschlüsselung

  • query_posts - nur in seltenen Fällen verwenden
  • pre_get_posts - Verwenden Sie diese Option, wenn Sie die Standardabfrage auf einer Seite ändern möchten
  • new WP_Query - verwendet, um unterschiedliche Ergebnisse aus der Hauptabfrage zu erhalten
  • get_posts - wie WP_Query, gibt stattdessen nur Ergebnisse im Array-Format zurück
  • query_posts

    Die Verwendung von query_posts wird nicht mehr empfohlen. Es gibt bessere Möglichkeiten, um das zu erreichen, was Sie erreichen möchten. Versuchen Sie, die Hauptabfrage zu ändern? Verwenden Sie die Aktion pre_get_posts, um die Ergebnisse zu filtern (siehe unten). query_posts wirft die ursprüngliche Hauptabfrage zur Seite (nachdem sie bereits ausgeführt wurde) und erstellt eine neue Hauptabfrage. Es ersetzt alle postbezogenen globalen Variablen und führt zu einem völlig neuen Datenbankaufruf. Es gibt einfach keinen Grund, die vorhandene Abfrage nicht einfach zu ändern. Ich bin mir sicher, dass es einige Randfälle gibt, in denen es verwendet werden sollte, aber ich kann mir keine aus dem Kopf denken. Verwenden Sie eine der folgenden Optionen, da sie höchstwahrscheinlich besser geeignet sind.

    pre_get_posts

    Dies ist ein Filter. Dadurch wird die Hauptabfrage in eine Seite geändert. So möchten wir zum Beispiel die Anzahl der Ergebnisse ändern, die auf der Homepage zurückgegeben werden…

Funktion tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page', 2); Rückkehr; }} add_action ('pre_get_posts', 'tj_change_home_number');

Dies würde die Hauptabfrage so ändern, dass nur 2 Posts auf der Homepage zurückgegeben werden.

WP_Query

Die Hauptabfrage für jede aufgerufene Vorlage ist eine Instanz von WP_Query . Wenn Sie mit den globalen Post-Variablen in einer Vorlage interagieren, ist dies das Ergebnis von WP_Query . Die Anwendungsfälle hierfür sind zahlreich, aber wie bei get_posts würde ich eine neue WP_Query deklarieren, um verwandte Posts zu ziehen, etwas in diese Richtung. Denken Sie daran, dass Sie, wenn Sie die Funktion the_post () ausführen, während Sie eine neue WP_Query durchlaufen, nach dem Durchlaufen die Funktion wp_reset_postdata () ausführen, um die globalen Post-Daten auf die ursprüngliche Hauptabfrage zurückzusetzen.

get_posts

Mit get_posts rufen Sie praktisch eine neue WP_Query auf und erhalten diese Informationen in einem Array-Format zurück. Ich verwende get_posts normalerweise, wenn ich Posts für einen Slider auf der Homepage zurückschicke oder einige verwandte Posts in einer Seitenleiste aufrufe. WP_Query könnte genauso einfach verwendet werden, aber es ist eine gute Möglichkeit, ein Array von Posts zu empfangen, ohne die globalen Post-Variablen zu ändern . Meiner Meinung nach ist es am einfachsten und am einfachsten zu bedienen. Es sind keine Funktionsaufrufe erforderlich, nachdem Ihre Daten zurückgegeben wurden. Sie durchlaufen lediglich ein Array.

Dies kann etwas verwirrend sein. Sie können also gerne in den Kommentaren unten Fragen stellen.

Referenz:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts vs get_posts vs pre_get_posts