Saya memiliki jenis pos kustom "Daftar" dan saya ingin mendapatkan semua Cantuman yang memiliki bidang khusus gateway_value != 'Yes'
, dan memesan hasilnya dengan bidang khusus lain location_level1_value
,. Saya bisa membuat kueri berfungsi secara terpisah, tetapi saya tidak bisa menggabungkannya:
Kueri 1 (urutkan berdasarkan lokasi):
$wp_query = new WP_Query( array (
'post_type' => 'listing',
'post_status' => 'publish',
'posts_per_page' => '9',
'meta_key' => 'location_level1_value',
'orderby' => 'location_level1_value',
'order' => 'ASC',
'paged' => $paged
)
);
Kueri 2 (nilai bidang khusus! = Ya):
$wp_query = new WP_Query( array (
'post_type' => 'listing',
'posts_per_page' => '9',
'post_status' => 'publish',
'meta_key' => 'gateway_value',
'meta_value' => 'Yes',
'meta_compare' => '!=',
'paged' => $paged
)
);
Kueri gabungan:
Saya melihat bantuan codex untuk ini, tetapi kueri berikut tidak berfungsi:
$wp_query = new WP_Query( array (
'post_type' => 'listing',
'posts_per_page' => '9',
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'gateway_value',
'value' => 'Yes',
'compare' => '!='
),
array(
'key' => 'location_level1_value'
)
),
'orderby' => "location_level1_value",
'order' => 'ASC',
'paged' => $paged
)
);
Apa yang saya lakukan salah dengan permintaan gabungan?
[UPDATE]: Jadi sekarang 3.1 telah dirilis, permintaan gabungan di atas masih tidak berfungsi. Saya mendapatkan hasil, hanya saja tidak diurutkan dengan benar.
[PEMBARUAN]: var_dump($wp_query->request)
memberikan yang berikut:
string(527) " SELECT SQL_CALC_FOUND_ROWS wp_7v1oev_posts.* FROM wp_7v1oev_posts
INNER JOIN wp_7v1oev_postmeta ON (wp_7v1oev_posts.ID = wp_7v1oev_postmeta.post_id)
INNER JOIN wp_7v1oev_postmeta AS mt1 ON (wp_7v1oev_posts.ID = mt1.post_id) WHERE 1=1 AND wp_7v1oev_posts.post_type = 'listing' AND (wp_7v1oev_posts.post_status = 'publish') AND wp_7v1oev_postmeta.meta_key = 'gateway_value' AND CAST(wp_7v1oev_postmeta.meta_value AS CHAR) != 'Yes' AND mt1.meta_key = 'location_level1_value' ORDER BY wp_7v1oev_posts.post_date DESC LIMIT 0, 9"
sumber
meta_query
parameter baru dalam 3.1, yang akan dirilis segera, tapi versi stabil saat ini adalah masih 3.0.5, tanpa parameter ini.Jawaban:
Anda bisa menggunakan kueri untuk memfilter konten seperti yang Anda inginkan dengan menggunakan 'meta_query' dengan opsi pemfilteran, dan untuk bagian pesanan, cukup tambahkan / ubah parameter berikut:
'order' => 'ASC'
sumber
Sama seperti yang dikatakan Jan di WordPress 3.1 baru yang dapat Anda gunakan
meta_query
tetapi sampai itu keluar, Anda dapat menggunakan kueri Pertama untuk mengatur dan memfilter di dalam lingkaran Anda seperti:dan tambahkan kode ini ke functions.php Anda
sekarang ini seharusnya bekerja.
sumber
gateway_value == "Yes"
seharusnya tanpa persyaratan ... Ada ide tentang cara memperbaikinya?Permintaan maaf untuk menjawab pertanyaan saya sendiri:
Melihat [http://core.trac.wordpress.org/ticket/15031[[1], sepertinya ini adalah masalah yang diketahui. Saya telah memperbaikinya (diretas?) Agar berfungsi menggunakan
post_filter
, seperti (hanya untuk referensi siapa pun yang mungkin mencari jawaban yang sama):Di functions.php ###
Diubah wp_query dalam file templat ###
sumber