Ich habe festgestellt, dass es eine Reihe von Operatoren gibt, die zum Vergleichen in meta_query verwendet werden können. Ich bin mir jedoch nicht ganz sicher, welchen Operator ich verwenden soll, es ist irgendwie verwirrend wie =
und LIKE
operator.
Ich möchte wissen, was genau jeder Operator bedeutet und in welchem Zustand ich sie verwenden sollte.
=
!=
>
>=
<
<=
LIKE
NOT LIKE
IN
NOT IN
BETWEEN
NOT BETWEEN
NOT EXISTS
Vielen Dank.
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 Erklärung für ein Tutorial, das nicht von WordPress stammt hier .
Das Hinzufügen des Platzhalterzeichens %
ist nicht erforderlich, da es standardmäßig hinzugefügt wird, wie @Herb unter answer sagte. So: $meta_value = '%' . like_escape( $meta_value ) . '%';
- siehe source .
IN
und NOT IN
wählen Übereinstimmungen aus, die sich im angegebenen Array befinden (oder nicht). Sie könnten also so etwas tun:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
und es würden 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 des Arrays festgelegt wurde.
Die generierte SQL dafür würde ungefähr so aussehen:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
Mit BETWEEN
und NOT BETWEEN
können Sie einen Wertebereich definieren, der korrekt sein kann, und Sie müssen 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 gräbt in ein Beispiel mit Datumsangaben.
NOT EXISTS
ist genau so, wie es sich anhört - der Metawert ist nicht festgelegt oder auf einen Nullwert 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 brauchte sie, um Nizza mit anderen zu spielen.
Hoffe das hilft!
Beachten Sie, dass WordPress bei Verwendung eines meta_compare-Werts von 'LIKE' automatisch das Platzhalterzeichen (%) um die meta_value-Zeichenfolge herumführt. Das Beispiel 'Pat%' kann also keine Ergebnisse zurückgeben.