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!
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.
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:
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:
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.
get_post ()
Eine weitere selbsterklärende Funktion ist get_post ()
, die Sie verwenden, um einen einzelnen Beitrag zu erhalten. Es hat drei optionale Parameter:
OBJEKT
, ARRAY_A
(ein assoziatives Array) oder ARRAY_N
(ein numerisches Array).'roh'
Es wird also nur gefiltert, wenn Sie es auf setzen 'bearbeiten'
, 'Anzeige'
, 'Attribut'
oder 'js'
.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).
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_Query
Argumente, 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.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 Post()
Der Kodex sagt, dass er "den Post-Index in der Schleife durchläuft". Es macht mehrere Dinge:
$ post
Daten.in der Schleife
Parameter zu WAHR
.$ 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.
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.
$ post
: wp_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.
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.
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?
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.
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!