WP_Query meistern Eine Einführung

Standardmäßig führt WordPress auf jeder von Ihrer Site angezeigten Seite eine Abfrage aus, deren Art von der Art der angezeigten Seite bestimmt wird. Wenn also eine statische Seite angezeigt wird, führt WordPress eine Abfrage aus, um die Seite mit der entsprechenden ID anzuzeigen. Wenn eine Archivseite angezeigt wird, ruft die Abfrage alle Beiträge in diesem Archiv ab.

Aber manchmal möchten Sie etwas anders machen. Entweder im Hauptinhalt Ihrer Seite oder an anderer Stelle auf der Seite (z. B. in der Seitenleiste oder Fußzeile) möchten Sie möglicherweise einen bestimmten Inhalt anzeigen, der von der Standardabfrage nicht ausgegeben wird.

Die gute Nachricht ist, dass WordPress das mit der WP_Query Klasse. Diese Klasse stellt Ihnen eine große Anzahl von Parametern zur Verfügung, mit denen Sie definieren können, welcher Inhalt ausgegeben werden soll (was nicht auf Posts beschränkt sein muss) und dann eine Schleife schreiben, die den Inhalt genau so anzeigt, wie Sie es möchten.

In dieser neunzehn-teiligen Serie zum Thema Mastering WP_Query, Baris Unver und ich führen Sie durch und durch WP_Query Wenn Sie die Serie abgeschlossen haben, können Sie sie in verschiedenen Szenarien verwenden und die Art und Weise anpassen, in der WordPress die Daten in der Datenbank Ihrer Site abfragt.

In dieser Einführung werde ich Folgendes behandeln:

  • Was ist WP_Query?
  • Warum verwenden? WP_Query?
  • Mögliche Probleme / was Sie beachten sollten.

Was ist WP_Query??

WP_Query ist eine von WordPress bereitgestellte Klasse. Die Tatsache, dass es sich um eine Klasse handelt, bedeutet, dass Sie mit dieser Klasse schnell auf die Variablen, Prüfungen und Funktionen zugreifen können, die in dieser Klasse im WordPress-Kern codiert sind, ohne sich Gedanken darüber machen zu müssen, dass der gesamte Code selbst geschrieben wird. Dies macht Ihren Code effizienter und zuverlässiger.

Wenn Sie genau wissen wollen, wie WP_Query funktioniert unter der Haube, Sie können den Code in sehen Includes / query.php Datei.

WP_Query besteht aus vier Hauptelementen:

  • Die Argumente für die Abfrage verwenden Parameter, die in dieser Serie ausführlich behandelt werden
  • die Abfrage selbst
  • die Schleife, die Postinhalte, Titel oder was auch immer Sie anzeigen möchten, ausgibt
  • Fertigstellung: Schließen von Tags und Tags und Zurücksetzen der Post-Daten

In der Praxis sieht das ungefähr so ​​aus:

have_posts ()) // Beginne, die Abfrageergebnisse zu durchlaufen. while ($ query-> have_posts ()) $ query-> the_post (); // Inhalt der abgefragten Post-Ergebnisse finden Sie hier.  // Stellen Sie die ursprünglichen Postdaten wieder her. wp_reset_postdata (); ?>

Sie könnten Ihre Argumente definieren, wenn Sie die Abfrage selbst schreiben, aber ich bevorzuge es, diese zuerst zu definieren, da sie die Dinge sauber hält.

Buchungsdaten zurücksetzen

Im obigen Beispiel habe ich hinzugefügt wp_reset_postdata () nach jeder Abfrage. Dies ist wichtig, da die Abfrage auf die Hauptabfrage zurückgesetzt wird, die auf dieser Seite ausgeführt wird. 

Zum Beispiel, wenn Sie verwenden WP_Query Um eine Abfrage in der Seitenleiste auszuführen, verwenden Sie wp_reset_postdata () sagt WordPress effektiv, dass wir uns immer noch auf der gerade angezeigten Seite befinden und mit der Standardabfrage für diese Seite funktionieren sollten. 

Wenn Sie dies nicht tun, können alle anderen Abfragen, die auf der Seite ausgeführt werden (einschließlich der Standardabfrage), möglicherweise fehlerhaft sein, und bedingte Tags, die prüfen, welche Art von Seite angezeigt wird, funktionieren nicht.

Warum verwenden Sie WP_Query??

Wenn Sie das nicht benutzt haben WP_Query Vor dem Unterricht fragen Sie sich vielleicht, warum Sie anfangen sollten. Hier werde ich mich auf zwei Aspekte konzentrieren: Warum verwenden? WP_Query über andere Methoden zum Erstellen benutzerdefinierter Abfragen und Szenarien, in denen Sie möglicherweise verwenden möchten WP_Query.

Warum sollten Sie WP_Query über andere Methoden verwenden??

WP_Query ist nicht die einzige Methode zum Erstellen einer benutzerdefinierten Abfrage. Es gibt vier weitere:

  • pre_get_posts
  • get_posts ()
  • get_pages ()
  • query_posts () (was du vermeiden sollst, wie ich erkläre)

Ich werde nicht sehr detailliert darauf eingehen, wie diese funktionieren, aber es ist hilfreich zu wissen, wann sie verwendet werden:

  • pre_get_posts ist ein Haken, der die Hauptabfrage ändert. Sie können es mit einem bedingten Tag verwenden, um zu überprüfen, ob ein bestimmter Seitentyp (z. B. die Startseite) angezeigt wird, und dann die ablaufende Abfrage zu ändern (z. B. um die letzten drei Beiträge zu entfernen, wenn Sie ' wieder an anderer Stelle auf der Seite anzeigen). Dies ist eine sehr effiziente Methode zum Ändern der Hauptabfrage und sollte Ihre erste Anlaufstelle sein, wenn Sie dies möchten. Sie können es jedoch nicht verwenden, um eine komplett neue Abfrage zu erstellen.
  • get_posts () und get_pages () sind sehr ähnlich, wobei der Hauptunterschied aus ihren Namen ersichtlich ist. Diese Vorlagen-Tags verwenden tatsächlich das WP_Query Klasse, also ist es eine andere Möglichkeit, das Gleiche zu tun, aber fügen Sie einen zusätzlichen Schritt hinzu, weil sie die WP_Query Klasse statt dir direkt zu tun. Sie können sie nur verwenden, um Beiträge oder Seiten abzufragen WP_Query selbst ist leistungsfähiger und lässt Sie fast alles in Ihrer Datenbank abfragen.
  • query_posts () ändert die Hauptabfrage, sollte jedoch nicht in Plugins oder Themes verwendet werden. Dies liegt daran, dass die Hauptabfrage ausgegeben wird und von vorne beginnt und die Hauptabfrage durch eine neue Abfrage ersetzt wird. Es ist außerdem anfällig für Fehler, insbesondere bei Seitenumbrüchen, und ist ineffizient und wirkt sich auf die Ladezeiten Ihrer Seite aus. Wenn Sie die Hauptabfrage ändern müssen, verwenden Sie pre_get_posts Wenn Sie eine vollständig neue Abfrage erstellen möchten, verwenden Sie WP_Query.

Das folgende Diagramm, das von Andrey „Rarst“ Savchenko unter der Creative-Commons-Lizenz veröffentlicht wurde, hat folgenden Sinn:

Wenn Sie möglicherweise WP_Query verwenden

Es gibt viele Szenarien, in denen WP_Query wird nützlich sein, und ich kann sie hier nicht alle behandeln, aber hier ist ein Überblick:

  • Um eine Liste verwandter Posts unter dem aktuellen Post hinzuzufügen, z. B. eine Liste aller Posts in derselben Kategorie.
  • So erstellen Sie zwei Schleifen auf derselben Seite: Zum Beispiel eine FAQ-Seite mit den Fragentiteln oben und dem Inhalt darunter.
  • So erstellen Sie eine benutzerdefinierte Liste der letzten Beiträge in der Seitenleiste oder Fußzeile Ihrer Website, wenn das Widget "Letzte Beiträge" nicht das tut, was Sie benötigen (oder Sie möchten es lieber selbst kodieren).
  • Um benutzerdefinierte Abfragen für Taxonomien zu erstellen, verwenden Sie mehr als eine Taxonomie, um zu definieren, was angezeigt wird.
  • Abfragen von Posttypen, die nicht von der Standardabfrage ausgegeben werden, z. B. Anlagen.
  • So erstellen Sie benutzerdefinierte Seiten mit einer Reihe von Abfragen für verschiedene Inhaltstypen, wie in dieser Beispielsite für einen Client.

Einige Vorsichtsmaßnahmen

Das WP_Query Klasse ist großartig. Ich erstelle viele Websites, für die benutzerdefinierte Abfragen erforderlich sind, und benutze sie häufig. Aber es kommt nicht ohne Nachteile. Hier sind einige Dinge, die Sie beachten sollten:

  • Wenn Sie nur die Art und Weise ändern möchten, in der Beiträge für einen bestimmten Inhaltstyp oder ein bestimmtes Archiv angezeigt werden, dürfen Sie dies nicht verwenden WP_Query. Erstellen Sie stattdessen einfach eine Vorlagendatei für diesen Archiv- oder Inhaltstyp und ändern Sie die Schleife in dieser Vorlagendatei.
  • Wenn Sie mehr oder weniger Posts anzeigen möchten, als normalerweise auf einer Archivseite angezeigt werden würden (z. B. keine bestimmte Kategorie anzeigen), verwenden Sie diese Option nicht WP_Query eine ganz neue Abfrage erstellen. Verwenden Sie stattdessen pre_get_posts Ändern Sie die Hauptabfrage zusammen mit einem bedingten Tag, um herauszufinden, wo genau Sie es tun möchten.
  • Vermeiden Sie zu viele Abfragen auf einer Seite. Sie könnten theoretisch eine Seite mit Hunderten von benutzerdefinierten Abfragen erstellen, denken Sie jedoch an die Serverlast. Wenn Sie mehr als vier oder fünf Abfragen auf einer Seite benötigen, möchten Sie möglicherweise zusätzliche Seiten erstellen.

Zusammenfassung

Das WP_Query class ist ein leistungsfähiges und äußerst nützliches Werkzeug, um benutzerdefinierte Abfragen zu erstellen und das Verhalten Ihrer WordPress-Site genau so zu gestalten, wie Sie es möchten. Wie wir gesehen haben, gibt es Zeiten, in denen Sie andere Methoden verwenden würden, um benutzerdefinierte Abfragen zu erstellen, aber es gibt eine Vielzahl von Anwendungen.

Im Rest dieser Serie werden wir Sie durch die Details der Verwendung führen WP_Query und das Beste daraus machen.