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
LIKE
i NOT LIKE
są 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 .
IN
i NOT IN
wybierz 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")
BETWEEN
i NOT BETWEEN
pozwalają 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 EXISTS
jest 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_query
tablicy, klucze nie powinny być poprzedzone przedrostkiemmeta_
. Jeśli używasz$query->meta_key
,$query->meta_value
itp następnie powinny one nadal zachowują prefiks.