Willkommen zum dritten Teil unserer Serie "Mastering WP_Query". Im vorherigen Teil haben wir 13 WordPress-Funktionen durchlaufen, die sich auf die beziehen WP_Query
Klasse. In diesem Teil werden wir WordPress-Hooks (Filter und Aktionen) überprüfen, mit denen Sie in Verbindung stehen können WP_Query
.
Also lasst uns ohne weiteres beginnen!
In der "Filters Reference" des Codex sind 16 WordPress-Filter unter dem Titel "WP_Query-Filter" aufgeführt. In diesem Abschnitt werden wir über sie sprechen. Dies wird ein ziemlich schneller Abschnitt sein, da es sich bei den meisten Filtern um verschiedene "Klauseln" einer Datenbankabfrage von WP_Query
Klasse.
Wir werden gleich darauf zurückkommen, nachdem wir die Filter durchgearbeitet haben, die nicht mit den Klauseln zusammenhängen.
found_posts
Mit diesem Filter können Sie die Anzahl der gefundenen Elemente ohne die Beschränkung ändern WP_Query
's posts_per_page
Streit.
Dieser Filter eignet sich besonders zum Erstellen von benutzerdefinierten Seitenumbrüchen. Mal sehen, was der Codex sagt:
Wenn Sie beispielsweise einen benutzerdefinierten Versatzwert in Ihren Abfragen deklarieren, zieht WordPress den Versatz NICHT vom Parameter $ wp_query-> found_posts ab (wenn Sie beispielsweise nach einem Versatz von 10 45 verwendbare Beiträge haben, ignoriert WordPress den versetzen und geben Sie found_posts immer noch einen Wert von 55).
Macht Sinn.
found_posts_query
Die Anzahl der gefundenen Gegenstände wird mit berechnet SELECT FOUND_ROWS ()
Befehl in MySQL. Mit diesem Filter können Sie diesen Befehl in etwas anderes ändern, falls Sie die Anzahl der gefundenen Elemente auf andere Weise berechnen müssen.
posts_request
Wenn Sie die abgeschlossene SQL-Abfrage ändern möchten, sollten Sie diesen Filter verwenden. Im Wesentlichen überschreibt es die gesamte SQL-Abfrage, die von der SQL-Anweisung erstellt wird WP_Query
Klasse.
Beiträge_Ergebnisse
Wenn Sie das PHP ändern möchten Array
Das WP_Query
Mit der SQL-Abfrage generiert, können Sie diesen Filter verwenden. Es gibt ein gutes Beispiel für den Codex, damit Sie sehen können, wie er funktioniert.
(Bitte beachten Sie, dass dieser Filter die roh Array, das aus der SQL-Abfrage generiert wird.)
the_posts
nicht wie Beiträge_Ergebnisse
, das the_posts
Der Filter wartet darauf, dass das Array intern verarbeitet wird. Dies bedeutet, dass das Array auf unveröffentlichte und verankerte Posts geprüft wird. Verwenden Sie diese Option, wenn Sie keine unveröffentlichten Beiträge in Ihrem Array wünschen.
WÄHLEN
Klausel) der Abfrage: posts_fields
Das WÄHLEN
Die Klausel einer SQL-Abfrage bestimmt, welche Datenbankfelder aus den resultierenden Datenbankzeilen ausgewählt werden, und dieser Filter hilft Ihnen beim Filtern.
GRENZE
Klausel der Abfrage: post_limits
Das GRENZE
Die Klausel einer SQL-Abfrage legt die Einschränkungen für die Abfrage fest, und dieser Filter hilft Ihnen beim Filtern.
DISTINCT
Klausel der Abfrage: posts_distinct
Das DISTINCT
Die Klausel einer SQL-Abfrage gibt an, dass die Abfrage nur andere Ergebnisse zurückgeben soll. Mit diesem Filter können Sie sie filtern. Natürlich, WP_Query
gibt keine eindeutigen Ergebnisse zurück, aber wenn Sie diesen Filter mit einer Funktion verwenden, die zurückgibt "DISTINCT"
, Die Abfrage wird angepasst, um nur andere Ergebnisse anzuzeigen.
WOHER
Klausel der Abfrage: posts_where
Das WOHER
Die Klausel einer SQL-Abfrage wird zum Filtern von MySQL verwendet WÄHLEN
, EINFÜGEN
, AKTUALISIEREN
oder LÖSCHEN
Anweisungen, und dieser Filter hilft Ihnen, diesen Filter zu filtern. Während WP_Query
Die Klasse erledigt die gesamte Arbeit, die zum Filtern der Ergebnisse erforderlich ist. Mit diesem Filter können Sie noch einen Schritt weiter gehen.
WOHER
Klausel der Abfrage, nachdem das Paging berechnet wurde: posts_where_paged
Dieser Filter ist eine Iteration der posts_where
filter, den Sie für Paging-Abfragen verwenden können.
WOHER
Klausel einer Suchabfrage: posts_search
Eine weitere Wiederholung der posts_where
Filter ist dieser Filter, mit dem Sie das ändern können WOHER
Klausel einer Abfrage, mit der Suchergebnisse in WordPress abgerufen werden.
BEITRETEN
Klausel der Abfrage: posts_join
Das BEITRETEN
Mit der Klausel einer SQL-Abfrage können Sie Ihren SQL-Befehl in mehreren Datenbanktabellen bearbeiten. Mit diesem Filter können Sie ihn filtern. Dies ist einer der fortgeschrittenen Teile von MySQL. Ich empfehle daher die Verwendung dieses Filters nicht, wenn Sie nicht ganz genau wissen, wie MySQL ist BEITRETEN
s Arbeit.
BEITRETEN
Klausel der Abfrage, nachdem das Paging berechnet wurde: posts_join_paged
Genauso wie posts_where_paged
ist eine Wiederholung von posts_where
, Dies ist eine Wiederholung der posts_join
Filter, der für Paging-Abfragen funktioniert.
SORTIEREN NACH
Klausel der Abfrage: posts_orderby
Das SORTIEREN NACH
Die Klausel einer SQL-Abfrage ordnet die Reihenfolge der Abfrage an. Mit diesem Filter können Sie die Reihenfolge filtern.
GRUPPIERE NACH
Klausel der Abfrage: posts_groupby
Das GRUPPIERE NACH
Durch die Klausel einer SQL-Abfrage wird die Abfrage nach einem Datenbankfeld "gruppiert". Mit diesem Filter können Sie filtern, wie die Ergebnisse gruppiert werden sollen.
posts_clauses
Wenn Sie alle Klauseln gleichzeitig behandeln möchten, gibt es auch einen Filter dafür: posts_clauses
. Dieser Filter deckt den WOHER
, GRUPPIERE NACH
, BEITRETEN
, SORTIEREN NACH
, DISTINCT
, WÄHLEN
, und GRENZEN
Klauseln.
Jetzt haben wir die entsprechenden Filter überprüft WP_Query
, Lasst uns zu den anderen Arten von Hooks übergehen: Aktionen.
pre_get_posts
Bevor die Abfrage analysiert wird, können Sie mit dieser Aktion mit der Abfrage interagieren (z. B. zusätzliche Abfragevariablen einfügen). Sehen wir uns ein kurzes Beispiel von Tom McFarlin an, um zu erfahren, wie man eine Kategorie von der Hauptschleife ausschließt:
set ('category__not_in', $ excluded); * / set_query_var ('category__not_in', $ excluded); add_action ('pre_get_posts', 'tutsplus_exclude_category'); ?>
parse_query
nicht wie pre_get_posts
, was in die Abfrage eingreift Vor Die Abfragevariablen werden gesetzt, die parse_query
Aktion übernimmt den Prozess nach dem Die Abfragevariablen werden gesetzt. Daher sollten Sie diese Aktion verwenden, wenn Sie die aktuellen Variablen prüfen und entsprechend handeln möchten.
die Post
Der Begriff die Aktion
ist etwas verwirrend, weil es der Name eines Action-Hooks ist, a WP_Query
-verwandte Funktion und auch eine Methode der WP_Query
Klasse.
Mit dieser Aktion können Sie, wie der Codex sagt, das Post-Objekt unmittelbar nach der Abfrage und Einrichtung ändern. Mit dieser Aktion können Sie die Ausgabe direkt ändern. Sehen wir uns ein kurzes Beispiel an:
'. __ ('FUNKTIONIERT', 'tutsplus'). '
Aktionen und Filter sind immer ein lustiges Thema, über das man reden und schreiben kann. (Ich weiß ganz sicher, dass meine beiden Serien über WordPress-Aktionen und WordPress-Filter Spaß beim Schreiben gemacht haben und eine großartige Reaktion von unseren Lesern erhalten haben.) Ich hoffe, Ihnen hat dieser Teil so gut gefallen, wie ich es geschrieben habe.
Möchten Sie dem Artikel etwas hinzufügen? Schießen Sie einen Kommentar im Kommentarbereich weiter unten. Und wenn Ihnen der Artikel gefallen hat, vergessen Sie nicht, ihn mit Ihren Freunden zu teilen!
Wir sehen uns im nächsten Teil, in dem wir über die Eigenschaften und Methoden der WP_Query
Klasse!