Nehmen wir an, Sie möchten etwas Einzigartiges mit der Art und Weise machen, wie Artikel abgerufen und auf einer bestimmten Seite von Ihnen angezeigt werden Webseite. Vielleicht möchten Sie mehrere Abfragen haben, eine für vorgestellte Artikel und eine für aktuelle Artikel. Oder vielleicht möchten Sie bestimmte Kategorien von Artikeln ausschließen Ihr Blog.

Unabhängig von Ihrem Ziel entscheiden Sie sich, eine benutzerdefinierte Seitenvorlage mit einer Abfrage zu erstellen, die etwas anderes ausführt. Bevor Sie jedoch mit dem Codieren beginnen, müssen Sie eine Entscheidung treffen: Welches WordPress-Abfragetool sollten Sie verwenden?

WordPress bietet verschiedene Arten von Abfragen: WP_query, query_posts (), get_posts (), get_pages ()und pre_get_posts. In vielen Fällen können Sie mehr als eines dieser Tools verwenden, um die gewünschten Ergebnisse zu erzielen. Es bleibt jedoch die Frage, welche Sie verwenden sollten.

In diesem Tutorial werden wir uns mit einigen Funktionen befassen, die Sie in WordPress verwenden können.

WP_Query

« WP_Query Ist die Klasse hinter (fast) jede WordPress-Anfrage. Wenn Sie eine Seite oder einen Artikel in WordPress laden, wird ein Objekt " WP_query "," $ Query "wird erstellt und ruft die Daten von relevanten Artikeln oder Seiten ab. In Wirklichkeit, " WP_Query Das ist die Engine, die die meisten Abfragen unter WordPress antreibt.

Sie verwenden " WP_Query Ohne es zu merken. Wenn Sie eine URL laden, erstellt der WordPress-Kernel eine Abfrage an die Datenbank mit der Klasse " WP_Query Basierend auf der URL und den darin enthaltenen Parametern. Wenn Sie also zu einer Seite mit einer URL wie "http://example.com/categorie/wordpress" gehen, erstellt WordPress ein Objekt. WP_Query Hiermit werden alle Artikel in der Kategorie "WordPress" gefunden und alle Artikel geladen.

« WP_Query »Feeds-Abfragen für in WordPress integrierte Standardartikel und -seiten und können auch zum Erstellen benutzerdefinierter Abfragen verwendet werden. Dies geschieht mit etwas "objektorientierter Programmierung". Sie müssen lediglich eine neue Variable erstellen und als neue Instanz der Klasse deklarieren. " WP_Query Wie folgt:

<?php
$args = array(
  // Definieren Sie die Argumente für die neue Abfrage
);

$myQuery = new WP_Query( $args );

Natürlich müssen Sie dann etwas mit den Ergebnissen der Abfrage tun. Dies würde jedoch den Rahmen dieses Tutorials sprengen.

Als WordPress-Entwickler werden Sie wahrscheinlich " WP_Query Öfter als jede andere Funktion. Er ist vielseitig und kraftvoll. Während einige der anderen in diesem Tutorial behandelten Fragen Ihnen Zeit sparen können, können Sie im Allgemeinen nichts falsch machen mit " WP_Query Für Ihre benutzerdefinierten Anforderungen beim Schreiben von Abfragen.

Die einzige Ausnahme von dieser Regel besteht darin, dass Sie nur die Ergebnisse der Standardabfrage filtern müssen. In diesem Fall " pre_get_posts Ist das Werkzeug, das Sie verwenden sollten. Schauen wir uns also Letzteres an.

pre_get_posts

« pre_get_posts Ist ein Haken, keine Funktion. Anstatt die Datenbank erneut abzufragen, " pre_get_posts "Ermöglicht das Ändern des Objekts" $ query "vor der Abfrage der Datenbank, um die von der Standardabfrage zurückgegebenen Ergebnisse effizient zu filtern.

In den meisten Fällen " pre_get_posts Wird mit bedingten Tags gepaart, um Abfrageergebnisse in bestimmten Situationen zu filtern. Zum Beispiel können Sie " pre_get_posts Um eine andere Anzahl von Artikeln auf die Homepage der Site zurückzugeben. Wenn Sie die Standardabfrage ausführen möchten, sie aber irgendwie ändern möchten, pre_get_posts Wird Ihr Arbeitsinstrument sein.

Es gibt einige Fälle, in denen " pre_get_posts Arbeiten Sie nicht und sollten nicht verwendet werden. die Wordpress Codex schlägt zwei dieser Fälle vor:

Der Filter pre_get_posts Sollte nicht verwendet werden, um die Abfrage in der Vorlage für eine einzelne Seite zu ändern, da dies die Eigenschaften beeinträchtigt, die bereits durch "" festgelegt wurden. parse_query () ".

Der Filter pre_get_posts Funktioniert nicht, wenn es zu einer Vorlagendatei wie 'archive.php' hinzugefügt wird, da diese Dateien geladen werden, nachdem die Hauptabfrage bereits ausgeführt wurde.

Wohin führt uns das? Es bedeutet, dass " pre_get_posts "Ist eine ausgezeichnete Wahl zum Ändern von Post-Load-Anforderungen in der Hauptschleife der Homepage, der Blog-Seite und einzelner Seiten wie" page.php "und" single.php ".

Manchmal reicht es jedoch nicht aus, die Standardabfrage zu filtern. Vielleicht möchten Sie mehrere WordPress-Abfragen verwenden oder die Ergebnisse so bearbeiten, dass " pre_get_posts Wird nicht helfen. In diesem Fall können Sie zu " WP_Query Oder verwenden Sie andere zusätzliche Optionen.

query_posts ()

Wenn Sie Ihre Suche WordPress-Tutorials, finden Sie viele Tutorials, die die Verwendung von " query_posts () “. Moderne Tutorials sprechen sich jedoch generell gegen diese Verwendung aus. Hier ist warum.

Die Funktion query_posts () "Ersetzt das Hauptabfrageobjekt" $ query ", das von der vom WordPress-Kern verwalteten Standardschleife erstellt und verwendet wird. Dazu wird eine neue Instanz erstellt. " WP_Query "Und weist es der globalen Variablen" Objekt "zu.

Dies könnte darauf hindeuten, dass " query_posts () Ist wirklich mächtig und nützlich. Das Spielen mit der Grundschleife bedeutet jedoch, dass " query_posts () Hat große Nachteile und sollte daher vermieden werden.

Der offizielle WordPress-Codex bietet mehrere Gründe für die Verwendung von " query_posts () Sollte in den allermeisten Fällen vermieden werden. Als Hauptgründe werden angeführt:

Verwenden " query_posts () "Kann die Ladezeit erheblich verlangsamen.

Seit " query_posts () »Ersetzt Standard-Abfragedaten, kann dies zu einer Reihe von Problemen beim Blättern und Verwüsten von Seiten führen, die mehrere Abfragen verwenden.

Kurz gesagt, die Verwendung von " query_posts () Ist eine gefährliche Angelegenheit. Tatsächlich wird die offizielle Dokumentation mit dem Vorbehalt geöffnet: Diese Funktion ersetzt die Hauptabfrage vollständig und ist nicht für die Verwendung durch Plugins oder Themes vorgesehen. Der übermäßig vereinfachte Ansatz zum Ändern der Hauptabfrage kann problematisch sein und sollte so weit wie möglich vermieden werden.

Mit anderen Worten, wenn Sie ein Thema oder Plugin codieren, was genau die große Mehrheit von uns tut, sollten Sie die Verwendung von " query_posts () “. Erstellen Sie stattdessen ein brandneues Objekt. " WP_Query »Oder benutzen« get_posts () "," get_pages () "Oder die" pre_get_posts ".

Es ist sicherlich nicht alles, es gibt andere Funktionen, die wir in einem zukünftigen Tutorial betrachten werden. Bis dahin wünsche ich Ihnen eine gute Codierung.