Kilka pierwszych działa tak, jak można się spodziewać:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKEi NOT LIKEsą operatorami SQL, które pozwalają dodawać symbole wieloznaczne, dzięki czemu można uzyskać zapytanie meta, które wygląda następująco:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
Zwróciłoby to wszystkie posty, w których wartość meta „name” ma ciąg „Pat”. W takim przypadku „Pat”, „Patricia” i „Patrick” zostaną zwrócone. Istnieje zakaz WordPress samouczek wyjaśnienie tutaj .
Dodanie znaku wieloznacznego %nie jest konieczne, ponieważ jest ono dodawane domyślnie, jak powiedział @Herb w poniższej odpowiedzi . W ten sposób: $meta_value = '%' . like_escape( $meta_value ) . '%';- patrz źródło .
INi NOT INwybierz dowolne dopasowania, które znajdują się w danej tablicy (lub jej nie ma). Więc możesz zrobić coś takiego:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
i otrzyma wszystkie posty, których kolor jest ustawiony na czerwony, zielony lub niebieski. Użycie „NOT IN” powoduje odwrócenie, wszystkie posty, których wartość jest ustawiona na cokolwiek innego niż to, co znajduje się w tablicy.
Wygenerowany SQL dla tego wyglądałby mniej więcej tak:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEENi NOT BETWEENpozwalają zdefiniować zakres wartości, które mogą być poprawne, i wymagają podania dwóch wartości w tablicy w meta_query:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
Otrzymasz wszystkie posty, których cena wynosi od 20 do 30. Ta osoba kopie w przykład z datami.
NOT EXISTSjest tak jak brzmi - meta wartość nie jest ustawiona lub jest ustawiona na wartość null. Do tego zapytania potrzebujesz tylko operatora klucza i porównania:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
Ta osoba musiała zapytać o nieistniejące meta wartości i potrzebowała ich do miłej zabawy z innymi.
Mam nadzieję że to pomoże!
meta_querytablicy, klucze nie powinny być poprzedzone przedrostkiemmeta_. Jeśli używasz$query->meta_key,$query->meta_valueitp następnie powinny one nadal zachowują prefiks.