Saya mencoba untuk mendapatkan kueri untuk mengambil semua posting di mana meta_key
tidak ada yang spesifik dan kemudian membuatnya.
Saya mengalami masalah menemukan pos tersebut karena kueri yang saya uji sepertinya tidak berfungsi.
Berikut adalah kode yang saya gunakan untuk mencoba mendapatkan posting tersebut:
$args = array(
'posts_per_page' => 18,
'cat'=>1955,
'post_status'=>'publish',
'meta_query' => array(
array(
'key' => 'colors',
'compare' => 'NOT EXISTS'
),
));
query_posts($args);
Ini tidak menghasilkan apa-apa jika tidak ada posting dengan kunci colors
, tetapi mengembalikan mereka ids
dari posting dengan kunci colors
setiap kali kunci itu ada (kebalikan dari apa yang saya butuhkan). Saya mencoba dengan EXIST
gantinya tetapi tidak berhasil.
Jika seseorang dapat memberi saya tip tentang cara membuat kueri yang benar seperti yang saya butuhkan, saya akan sangat menghargainya.
Terima kasih!
custom-post-types
wp-query
post-meta
JordanBel
sumber
sumber
Jawaban:
Saya melakukan beberapa pengujian lagi dengan ini, dan jujur tidak dapat menemukan alasan itu tidak akan berhasil (kecuali kode di atas hanya potongan dan kode sebenarnya cocok dengan contoh saya di bawah). Namun, saya menemukan beberapa hal yang mungkin menuntun Anda ke arah yang benar.
1) Dengan sendirinya, kueri meta ini setara dengan "warna IS NULL", artinya akan mengembalikan tulisan yang tidak memiliki kunci yang ditetapkan di tabel postmeta. Ini adalah kasus yang ditunjukkan di atas, dan seharusnya sudah bekerja.
2) Sebelum WordPress 3.9, menetapkan indeks 'hubungan' ke 'ATAU' mengubah kondisi ini. Ia mengembalikan yang sebaliknya. Jangan tanya kenapa. Ini sangat penting ketika melakukan beberapa meta queries. Itu berarti bahwa pada awalnya tidak mungkin melakukan kueri untuk posting yang memiliki kunci 'warna' diatur ke 'biru' (atau apa pun) atau tidak disetel sama sekali. Kueri di bawah ini akan mengabaikan kondisi pertama dan hanya mengembalikan yang cocok dengan kondisi kedua.
3) Namun, kita dapat membodohi WordPress menggunakan kondisi pertama jika kita menetapkan 'nilai'. Tidak perlu nilai yang relevan (itu diabaikan, sejauh yang saya tahu), tetapi perlu diatur agar
NOT EXISTS
kondisi tersebut memiliki efek apa pun.Ini benar hingga WordPress 3.9. Jika Anda masih menggunakan versi yang lebih lama, ini merupakan solusi yang layak.
sumber
EXISTS
danNOT EXISTS
"bug" yang mengharuskan Anda untuk menentukan nilai, telah diperbaiki di WP 3.9Menggunakan kueri khusus, ini berfungsi untuk saya:
sumber