Die ersten paar Arbeiten ungefähr so, wie Sie es erwarten würden:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
und NOT LIKE
sind SQL-Operatoren, mit denen Sie Platzhaltersymbole hinzufügen können, sodass Sie möglicherweise eine Metaabfrage erhalten, die folgendermaßen aussieht:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
Dies würde alle Posts zurückgeben, bei denen der Meta-Wert "name" die Zeichenfolge "Pat" enthält. In diesem Fall würden "Pat", "Patricia" und "Patrick" an Sie zurückgegeben. Es gibt eine nicht-Wordpress Tutorial Erklärung hier .
Das Hinzufügen des Platzhalterzeichens %
ist nicht erforderlich, da es standardmäßig hinzugefügt wird, wie @Herb in seiner nachstehenden Antwort sagte . So: $meta_value = '%' . like_escape( $meta_value ) . '%';
- siehe Quelle .
IN
und NOT IN
wählen Sie alle Übereinstimmungen aus, die im angegebenen Array enthalten sind (oder nicht). Sie könnten also so etwas tun:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
und es würde alle Beiträge erhalten, deren Farbe entweder auf Rot, Grün oder Blau eingestellt ist. Wenn Sie 'NOT IN' verwenden, werden alle Posts umgekehrt, für die ein anderer Wert als der im Array angegebene festgelegt wurde.
Die generierte SQL dafür würde ungefähr so aussehen:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
und NOT BETWEEN
ermöglichen es Ihnen, einen Wertebereich zu definieren, der korrekt sein kann, und erfordern, dass Sie in Ihrer meta_query zwei Werte in einem Array angeben:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
Dadurch erhalten Sie alle Posts, bei denen der Preis zwischen 20 und 30 liegt. Diese Person führt ein Beispiel mit Datumsangaben an.
NOT EXISTS
ist genau so, wie es sich anhört - der Meta-Wert ist nicht festgelegt oder auf einen Null-Wert festgelegt. Alles, was Sie für diese Abfrage benötigen, ist der Schlüssel- und Vergleichsoperator:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
Diese Person musste nicht vorhandene Meta-Werte abfragen und sie brauchte, um nett mit anderen zu spielen.
Hoffe das hilft!
meta_query
Array verwenden, sollte Ihren Schlüsseln kein Präfix vorangestellt werdenmeta_
. Wenn Sie usw. verwenden$query->meta_key
,$query->meta_value
sollten diese weiterhin das Präfix beibehalten.Beachten Sie, dass WordPress bei Verwendung eines meta_compare-Werts von 'LIKE' automatisch das Platzhalterzeichen (%) um die meta_value-Zeichenfolge umschließt. Das Beispiel 'Pat%' kann also keine Ergebnisse zurückgeben.
quelle
%
?