Beberapa karya pertama tentang seperti yang Anda harapkan:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
dan NOT LIKE
adalah operator SQL yang memungkinkan Anda menambahkan simbol wild-card, sehingga Anda bisa memiliki kueri meta yang terlihat seperti ini:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
Ini akan mengembalikan semua posting di mana nilai meta "nama" memiliki string "Pat". Dalam hal ini, "Pat" "Patricia" dan "Patrick" akan dikembalikan kepada Anda. Ada penjelasan tutorial non-WordPress di sini .
Menambahkan karakter wildcard %
tidak perlu, karena akan ditambahkan secara default seperti @Herb mengatakan dalam jawabannya di bawah ini . Seperti ini: $meta_value = '%' . like_escape( $meta_value ) . '%';
- lihat sumber .
IN
dan NOT IN
pilih setiap kecocokan yang ada di (atau tidak dalam) array yang diberikan. Jadi Anda bisa melakukan sesuatu seperti ini:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
dan itu akan mendapatkan semua posting yang memiliki warna diatur ke merah, hijau, atau biru. Menggunakan 'NOT IN' mendapatkan kebalikannya, setiap tulisan yang memiliki nilai diatur ke hal lain selain apa yang ada dalam array.
SQL yang dihasilkan untuk ini akan terlihat seperti ini:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
dan NOT BETWEEN
memungkinkan Anda untuk menentukan rentang nilai yang bisa benar, dan mengharuskan Anda untuk memberikan dua nilai dalam array di meta_query Anda:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
Ini akan memberi Anda semua pos dengan harga antara 20 dan 30. Orang ini menggali contoh dengan tanggal.
NOT EXISTS
hanya seperti apa kedengarannya - nilai meta tidak disetel atau disetel ke nilai nol. Yang Anda butuhkan untuk permintaan itu adalah operator kunci dan pembanding:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
Orang ini perlu kueri nilai meta yang tidak ada, dan membutuhkannya untuk bermain baik dengan orang lain.
Semoga ini membantu!
meta_query
array, kunci Anda seharusnya tidak diawali denganmeta_
. Jika Anda menggunakan$query->meta_key
,,$query->meta_value
dll. Maka ini masih harus mempertahankan awalan.Perhatikan bahwa ketika menggunakan nilai meta_compare dari 'LIKE', WordPress secara otomatis membungkus karakter wildcard (%) di sekitar string meta_value. Jadi contoh 'Pat%' bisa gagal mengembalikan hasil apa pun.
sumber
%
?