Wenn Sie diese Serie verfolgt haben, wissen Sie, wie WP_Query
ist strukturiert und wie Sie damit benutzerdefinierte Abfragen schreiben. In der Lage sein, was zu definieren WP_Query
Wenn Sie aus der Datenbank abrufen, müssen Sie wissen, mit welchen Argumenten Sie Daten abfragen können.
WP_Query
verfügt über eine Vielzahl möglicher Argumente, wodurch es äußerst flexibel ist. Wie Sie es verwenden können, um fast alles, was in Ihrem gespeichert ist, abzufragen wp_posts
Tabelle hat es Argumente für jede Permutation von Abfragen, die Sie möglicherweise für Ihren Inhalt ausführen möchten.
In diesem Lernprogramm werde ich die Argumente für benutzerdefinierte Felder betrachten. Aber zunächst eine kurze Zusammenfassung, wie Sie Argumente in codieren WP_Query
.
Bevor wir anfangen, wollen wir kurz aufzeigen, wie die Argumente funktionieren WP_Query
. Wenn du codierst WP_Query
In Ihren Designs oder Plugins müssen Sie vier Hauptelemente einfügen:
ob
und während
Tags und Zurücksetzen der PostdatenIn 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 (); ?>
Die Argumente geben WordPress an, welche Daten aus der Datenbank abgerufen werden sollen. Diese werden hier behandelt. Wir konzentrieren uns hier also nur auf den ersten Teil des Codes:
$ args = array (// Argumente für Ihre Abfrage.);
Wie Sie sehen, sind die Argumente in einem Array enthalten. Sie lernen, wie Sie diese codieren, während Sie dieses Tutorial durcharbeiten.
Es gibt eine bestimmte Methode zum Codieren der Argumente im Array, die wie folgt lautet:
$ args = array ('parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value');
Sie müssen die Parameter und deren Werte in einfache Anführungszeichen setzen, verwenden =>
zwischen ihnen und trennen Sie sie mit einem Komma. Wenn Sie dies falsch verstehen, fügt WordPress möglicherweise nicht alle Ihre Argumente der Abfrage hinzu, oder Sie erhalten einen weißen Bildschirm.
Benutzerdefinierte Felder, auch als Post-Metadaten bezeichnet, können eine separate Klasse namens verwenden WP_Meta_Query
. Das heißt, wenn Sie eine Abfrage nur für Post-Metadaten ausführen möchten, können Sie eine der beiden verwenden WP_Meta_Query
oder WP_Query
(die zugreift WP_Meta_Query
), wenn Sie Post-Metadaten und andere Elemente wie den Post-Typ abfragen möchten, verwenden Sie WP_Query
.
Das WP_Meta_Query
Die Klasse wird an anderer Stelle in dieser Serie ausführlich behandelt, daher werde ich hier nicht näher darauf eingehen, aber der Hauptunterschied zwischen dem und dem WP_Query
ist dass WP_Query
können Sie einige einfache Argumente erstellen, ohne geschachtelte Arrays zu verwenden.
Die wichtigsten Parameter für die Verwendung WP_Query
Benutzerdefinierte Felder werden wie folgt abgefragt:
meta_key
(Schnur): Benutzerdefinierter Feldschlüssel.meta_value
(Schnur): Benutzerdefinierter Feldwert.meta_value_num
(Nummer): Benutzerdefinierter Feldwert.meta_compare
(Schnur): Bediener zum Testen der 'meta_value'
. Mögliche Werte sind '='
, '! ='
, ">"
, '> ='
, '<'
, '<='
, 'MÖGEN'
, 'NICHT WIE'
, 'IM'
, 'NICHT IN'
, 'ZWISCHEN'
, 'NICHT ZWISCHEN'
, 'EXISTIERT NICHT'
, "REGEXP"
, "NICHT REGEXP"
oder 'RLIKE'
. Standardwert ist '='
.Verwenden Sie diese Parameter für eine einfache Abfrage für benutzerdefinierte Felder. So können Sie beispielsweise Beiträge ausgeben, die ein benutzerdefiniertes Feld mit dem Schlüssel enthalten key1
(unabhängig von ihrem Wert) verwenden Sie dieses Argument:
$ args = array ('meta_key' => 'key1');
Dies würde alle Beiträge mit einem benutzerdefinierten Feld mit der key1
Schlüssel, welchen Wert auch immer.
Wenn Sie einen Wert angeben möchten, fügen Sie ein zusätzliches Argument hinzu:
$ args = array ('meta_key' => 'key1', 'meta_value' => 'value1');
Dies würde alle Beiträge mit einem benutzerdefinierten Feld mit der key1
Schlüssel und die Wert1
Wert dafür.
Alternativ können Sie alle Beiträge mit einem benutzerdefinierten Feld mit dem Wert abrufen Wert1
, unabhängig vom Schlüssel. Dies kann nützlich sein, wenn Sie mehrere benutzerdefinierte Feldschlüssel mit doppelten Werten haben:
$ args = array ('meta_value' => 'value1');
Sie können also, wie Sie sehen, nur den Schlüssel oder Wert des benutzerdefinierten Felds abfragen. Sie müssen nicht immer beides angeben.
Sie haben vielleicht oben bemerkt, dass es viele mögliche Parameter für die gibt meta_compare
Argument, und ihre Verwendung kann nicht immer sofort ersichtlich sein. Werfen wir einen Blick auf die, die Sie am häufigsten verwenden könnten:
=
: Gleich Dies ist die Standardeinstellung, wenn Sie also keine angeben meta_compare
Argument, das wird WP_Query verwenden.!+
: Ist ungleich zu.>
: Größer als.> =
: Größer als oder gleich wie.<
: Weniger als.<=
: Weniger als oder gleich.MÖGEN
Hinweis: Der von Ihnen verwendete Wert wird ignoriert. Sie können ihn auch mit Platzhalterzeichen verwenden, um Werte wie den gesuchten Wert zu finden.NICHT WIE
: Funktioniert ähnlich wie LIKE, fragt jedoch das Gegenteil ab!IM
: Verwenden Sie dies mit einem Array im Argument 'value', um Beiträge mit einem oder mehreren Werten im Array zu finden.ZWISCHEN
: Verwenden Sie ein Array mit zwei numerischen Werten (in der angegeben meta_value
Argument), um Beiträge mit einem benutzerdefinierten Feldwert zwischen diesen Werten zu finden (aber ihnen nicht gleich).NICHT ZWISCHEN
: Fragt Beiträge mit benutzerdefinierten Feldwerten außerhalb eines Arrays mit zwei numerischen Werten ab, die durch angegeben werden meta_value
Streit.Sehen wir uns einige Anwendungsbeispiele für dieses Argument an.
Zunächst können Sie benutzerdefinierte Feldschlüssel oder Werte mit der Option ausschließen meta_compare
Streit. So holen Sie alle Beiträge außer denen mit einem benutzerdefinierten Feld mit der key1
Schlüssel, würden Sie dies verwenden:
$ args = array ('meta_key' => 'key1', 'meta_compare' => '! =');
Sie könnten auch die verwenden 'NICHT IN'
Wert für die meta_compare
Argument, das auch mit einer Zeichenfolge aus mehreren Werten verwendet werden kann:
$ args = array ('meta_key' => 'key1, key2', 'meta_compare' => 'NOT IN');
Dies würde Beiträge abfragen, die keine benutzerdefinierten Felder mit enthalten key1
oder key2
Werte. Wenn Sie genauer sein möchten und möglicherweise nach Beiträgen mit einem benutzerdefinierten Feld und nicht mit einem anderen Feld suchen, verwenden Sie ein verschachteltes Array, auf das wir in Kürze zugreifen werden.
Die obigen Beispiele verwenden nicht numerische Werte. Sie können verwenden WP_Query
Mit benutzerdefinierten Feldern mit numerischen Werten können Sie nicht nur Beiträge mit einem benutzerdefinierten Feld mit diesem Wert abrufen, sondern auch solche mit benutzerdefinierten Feldern mit höheren oder niedrigeren Werten. Sie können dies beispielsweise in einem Geschäft verwenden, wenn Sie nach Artikeln suchen, die über oder unter einem bestimmten Preis liegen.
Um nach Beiträgen mit einem benutzerdefinierten Feldwert über einer bestimmten Zahl zu suchen, verwenden Sie Folgendes:
$ args = array ('meta_key' => 'numkey', 'meta_value' => '100', 'meta_compare' => '>');
Dies würde alle Beiträge mit einem benutzerdefinierten Feld mit der Zifferntaste
Schlüssel und einen Wert von über 100
. Wenn Sie nach Werten von 100 oder mehr abfragen möchten, verwenden Sie 'meta_compare' => '> ='
.
Sie können auch nach Beiträgen suchen, deren benutzerdefinierte Felder Werte zwischen zwei Zahlen enthalten, die Sie mit der Option angeben ZWISCHEN
Argument und ein Array:
$ args = array ('meta_key' => 'numkey', 'meta_value' => array ('100', '200'), 'meta_compare' => 'BETWEEN');
Dies würde alle Beiträge mit einem Wert in der Zifferntaste
benutzerdefiniertes Feld zwischen 100 und 200.
Wenn Sie mehr als ein benutzerdefiniertes Feld abfragen oder mehr als einen Operator verwenden möchten, können Sie ein verschachteltes Array verwenden.
Diese haben folgende Struktur:
$ args = array ('meta_query' => array ('relation' => ", // optionales Argument. array (// 'meta_query' Argumente gehen hier hin.)));
Die Art und Weise, wie Sie das strukturieren 'meta_query'
Argument in WP_Query
ist genau das Gleiche wie Sie es mit der WP_Meta_Query
Klasse, die in einem späteren Tutorial dieser Serie behandelt wird, daher werde ich das hier nicht wiederholen.
Seit WordPress Version 4.1 können Sie auch mehrere Ebenen verschachtelter Arrays verwenden, um immer komplexere und präzisere Abfragen zu erstellen. Diese sehen ungefähr so aus:
$ args = array ('meta_query' => array ('relation' => ", // optionales Argument. array ('relation' =>", array (// Die ersten 'meta_query'-Argumente werden hier angegeben.), array (// Zweiter Satz von 'meta_query'-Argumenten hier.))));
Auf diese Weise können Sie verschiedene Beziehungen auf verschiedenen Ebenen in Ihrer Abfrage verwenden, z. B. Abfragen nach Beiträgen mit einem Wert in einem benutzerdefinierten Feldschlüssel oder mit beiden Werten in einem anderen benutzerdefinierten Feldschlüssel. Dies wird ausführlicher mit Beispielen im Tutorial auf der beschrieben WP_Meta_Query
Klasse, die Teil dieser Serie ist.
Verwendung der WP_Query
Eine Klasse zum Abfragen der Metadaten (oder benutzerdefinierten Felder) Ihrer Posts bietet Ihnen viel Flexibilität. Mehrere mögliche Argumente kombiniert mit einer Reihe von Operatoren helfen Ihnen dabei, Ihre Datenbank genau so abzufragen, wie Sie es möchten.
Wenn Sie nur Post-Metadaten-Argumente in Ihrer Abfrage verwenden möchten (und diese nicht mit anderen Argumenten kombinieren möchten, z. B. für Post-Typen), können Sie auch das verwenden WP_Meta_Query
Klasse, die später in dieser Serie behandelt wird.