WP_Query meistern Verwandte Funktionen

Hallo und willkommen zum zweiten Teil der Serie "Mastering WP_Query". Im ersten Teil haben wir mit der Serie angefangen, indem wir einfach das vorgestellt haben, was der WP_Query Klasse ist. In diesem zweiten Teil werden wir die Funktionen kennenlernen, die sich darauf beziehen WP_Query.

Lass uns anfangen!

Die Funktionen von WP_Query mit Funktionen, Aktionen und Filtern nutzen

Ich bin kein Experte für Programmierung, aber ich kann das sehen WP_Query class ist eines der besten Beispiele für das MVC-Muster. Es ist extrem leistungsfähig, vollständig erweiterbar und sehr einfach zu bedienen, sobald Sie die Grundlagen kennen gelernt haben.

Zusätzlich zu seinen Eigenschaften, Methoden und Parametern (die wir in Zukunft noch durchgehen werden) bietet WordPress zusätzliche Funktionen und Hooks (dh Aktionen und Filter), mit denen Sie arbeiten können WP_Query Klasse. In diesem Lernprogramm werden wir die Funktionen kennenlernen und im nächsten Teil werden Aktionen und Filter angezeigt WP_Query. Wenn Sie sehen, dass ich etwas vergessen habe, können Sie mich gerne mit einem Kommentar benachrichtigen.

WP_Query Verwandte Funktionen

Es gibt 13 WordPress-Funktionen, die mit der WP_Query Klasse, die Ihnen helfen kann, die Kraft von zu nutzen WP_Query. Sie brauchen keine Einführung, also geht es los:

Öffentliche Abfragevariablen abrufen: get_query_var ()

Der Name unserer ersten Funktion spricht für sich: Sie braucht das Globale $ wp_query Objekt und ruft eine öffentliche Abfragevariable davon ab. Es hat zwei Parameter: Der erste ist die Variable, die ihren Wert zurückgibt, und der zweite ist ein Standardwert, der zurückgegeben werden soll, wenn die Variable nicht gesetzt ist:

Auswirkungen auf die Hauptschleife: query_posts ()

Um ehrlich zu sein, ist dies eine Schlecht Funktion. Sie müssen es wirklich nicht verwenden, aber um "den richtigen Weg" zu sagen, gehen wir darüber und sagen Ihnen, es sei "der falsche Weg"..

query_posts () ist eine Funktion, die die Hauptabfrage ändert, indem sie die Hauptabfrage beiseite stellt und eine neue Abfrage ausführt - und Sie müssen sie verwenden wp_reset_query () danach aufräumen.

Diese Funktion ist eine der am meisten missbraucht Funktionen im Kern von WordPress. Sie sollten es nicht verwenden, um sekundäre Abfragen zu erstellen - Sie können die verwenden WP_Query Klasse oder die get_posts () Funktion (worüber wir später in diesem Tutorial sprechen werden). Sie sollten es nicht verwenden, um die Hauptabfrage zu ändern. Sie sollten die pre_get_posts Aktion (worüber wir später noch sprechen werden). Sogar der Kodex entmutigt uns von der Verwendung und zeigt Alternativen auf.

Fazit: Verwenden Sie es nicht.

Einen einzelnen Beitrag erhalten: get_post ()

Eine weitere selbsterklärende Funktion ist get_post (), die Sie verwenden, um einen einzelnen Beitrag zu erhalten. Es hat drei optionale Parameter:

  • Die erste ist die Beitrags-ID (oder standardmäßig die ID des aktuellen Beitrags)..
  • Der zweite ist der Typ des Ergebnisses, das Sie erhalten: entweder OBJEKT, ARRAY_A (ein assoziatives Array) oder ARRAY_N (ein numerisches Array).
  • Der dritte ist die Wahl der Filterung des Ergebnisses. Der Standardwert ist 'roh' Es wird also nur gefiltert, wenn Sie es auf setzen 'bearbeiten', 'Anzeige', 'Attribut' oder 'js'.

Speichern von Abfragen in Arrays: get_posts ()

Das get_posts () Mit der Funktion können Sie Abfragen ausführen und als Arrays speichern, um sie an verschiedenen Orten verwenden zu können. Es erfordert die gleichen Argumente mit WP_Query So können Sie die Abfrage nach Ihren Wünschen anpassen. (Wir werden es überprüfen WP_Query's Parameter in der Zukunft, also bleiben Sie dran!) Es ist die beste und effizienteste Art, Postlisten zu erstellen, aber keine Loops.

 'news', 'order' => 'ASC', 'orderby' => 'post_title', 'posts_per_page' => -1); // Gibt ein Array aller Beiträge in der Kategorie "News" zurück. $ all_posts_list = get_posts ($ args); ?>

Obwohl diese Funktion verwendet werden kann, um "sekundäre Abfragen" problemlos auszuführen, empfiehlt der Codex die Verwendung von WP_Query wenn Sie mehrere Loops erstellen und verwenden get_posts () beim Abrufen einer Beitragsliste. Peter R. Knight erklärt den Unterschied zwischen get_posts () und WP_Query Einfach ausgedrückt: Der Hauptunterschied besteht darin WP_Query macht mehr Datenbankabfragen (Postdaten, Metadaten, Autorendaten und Kommentardaten), während get_posts () macht nur eine Abfrage (Postdaten).

Seiten erhalten: get_pages ()

Diese ungerade Funktion hat den Zweck, eine Liste von Seiten abzurufen, obwohl sie eine Post-Typ Parameter, mit dem Sie auch einen anderen Beitragstyp auswählen können (vorausgesetzt der Beitragstyp ist hierarchisch, andernfalls wird er zurückgegeben falsch).

 'ASC', 'sort_column' => 'post_title', 'hierarchisch' => 1, 'exclude' => "", 'include' =>, 'meta_key' => "", 'meta_value' => ", 'Autoren '=> ",' child_of '=> 0,' parent '=> -1,' exclude_tree '=>",' number '=> ",' offset '=> 0,' post_type '=>' page ', 'post_status' => 'publish'); $ pages = get_pages ($ args);?>

Es akzeptiert Argumente, die sehr ähnlich sind WP_QueryArgumente, aber sie sind etwas anders:

  • Sortierreihenfolge: Ob die Seiten aufsteigend sortiert werden sollen (asc) oder absteigend (desc) Auftrag.
  • sort_column: So sortieren Sie die Seiten. Akzeptiert post_title, menu_order, nach Datum, post_modified, ICH WÜRDE, post_author, und Anschriftname.
  • hierarchisch: Ob Seiten hierarchisch aufgelistet werden sollen (1) oder nicht (0).
  • ausschließen: Eine durch Kommas getrennte Liste oder ein Array von Seiten-IDs, die von der Liste ausgeschlossen werden sollen.
  • umfassen: Eine durch Kommas getrennte Liste oder ein Array von Seiten-IDs, die in die Liste aufgenommen werden sollen und alles andere ausschließen.
  • meta_key: Bei Verwendung mit meta_value Argument, enthält es nur Seiten mit dem definierten Metaschlüssel und Wert.
  • meta_value: Bei Verwendung mit meta_key Argument, enthält es nur Seiten mit dem definierten Metaschlüssel und Wert.
  • Autoren: Eine durch Kommas getrennte Liste von Autoren-IDs.
  • Kind von: Eine ID einer Seite, die nur ihre Kinder und Enkelkinder aus der Liste abruft.
  • Elternteil: Listet die Seiten auf, deren übergeordnete Seiten-ID angegeben ist. Damit dieses Argument funktioniert, muss der hierarchisch Argument muss auf gesetzt sein 0.
  • exclude_tree: Eine durch Kommas getrennte Liste oder ein Array von Seiten-IDs, die mit ihren untergeordneten Elementen ausgeschlossen werden sollen.
  • Nummer: Anzahl der abzurufenden Seiten.
  • Versatz: Anzahl der von oben zu überspringenden Seiten.
  • Post-Typ: Der abzufragende Beitragstyp. Natürlich ist es standardmäßig eingestellt Seite.
  • Poststatus: Eine durch Kommas getrennte Liste der einzufügenden Post-Statustypen.

Überprüfen, ob die Abfrage Beiträge zurückgibt: have_posts ()

Ohne Parameter zu akzeptieren, kehrt diese Funktion einfach zurück WAHR wenn die Abfrage Datensätze zurückgibt und FALSCH wenn nicht.

Die Schleife bearbeiten: die Post()

Der Kodex sagt, dass er "den Post-Index in der Schleife durchläuft". Es macht mehrere Dinge:

  1. Es holt den nächsten Datensatz aus der Abfrage.
  2. Es richtet das ein $ post Daten.
  3. Es setzt die in der Schleife Parameter zu WAHR.

Einrichten $ post: setup_postdata ()

Diese Funktion spricht auch für sich: Sie richtet die globalen Postdaten ein. Mal sehen, was der Codex dazu sagt:

setup_postdata () füllt die globalen Variablen $ id, $ authordata, $ currentday, $ currentmonth, $ page, $ pages, $ mehrseitig, $ more, $ numpages, Dadurch können viele Template-Tags im aktuellen Post-Kontext funktionieren. Das globale wird nicht zugewiesen $ post variabel, scheint jedoch zu erwarten, dass sein Argument einen Verweis darauf darstellt.

Aktuelle Schleife löschen: rewind_posts ()

Eine weitere Funktion, deren Name seine Funktionalität angibt: Diese Funktion "spult" den Loop einfach zurück, so dass Sie ihn später erneut ausführen können.

Zurücksetzen $ postwp_reset_postdata ()

Diese Funktion setzt das globale zurück $ post Variable zurück zum ersten Beitrag in der Hauptabfrage. Es ist besser, diese nach einer sekundären Abfrage zu verwenden.

Zurücksetzen der Abfrage: wp_reset_query ()

Diese sollte verwendet werden, wenn die Hauptabfrage geändert wird (mit der query_posts () Funktion oder die pre_get_posts Aktion, die wir im nächsten Teil sehen werden), damit die Hauptabfrage zurückgesetzt werden kann.

Prüfen, ob die aktuelle Abfrage die Hauptabfrage ist: is_main_query ()

Dies ist ein bedingtes Tag, das zurückgegeben wird WAHR wenn die aktuelle Abfrage die Hauptabfrage ist und FALSCH wenn nicht Einfach, richtig?

Überprüfen, ob wir uns in der Schleife befinden: in der Schleife()

Ein weiteres bedingtes Tag ist in der Schleife() das kehrt einfach zurück WAHR oder FALSCH ob Ihr Code innerhalb des Loop läuft oder nicht.

Ende von Teil Zwei

Jetzt wissen Sie (wahrscheinlich) alle Funktionen, mit denen Sie zu tun haben WP_Query! Bleiben Sie dran für den nächsten Teil, über den wir etwas erfahren werden WP_Query verwandte Aktionen und Filter.

Haben Sie Kommentare oder etwas, was Sie diesem Teil hinzufügen können? Fühlen Sie sich frei, Ihre Gedanken zu teilen, indem Sie unten kommentieren. Und wenn Ihnen der Artikel gefallen hat, vergessen Sie nicht, ihn mit Ihren Freunden zu teilen!