사용자 정의 게시물 유형 "Listing"이 있고 사용자 정의 field가있는 모든 Listings를 가져 gateway_value != 'Yes'
오고 다른 사용자 정의 필드별로 결과를 정렬하려고합니다 location_level1_value
. 쿼리를 개별적으로 작동시킬 수는 있지만 조합 할 수는 없습니다.
쿼리 1 (위치별로 정렬) :
$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
)
);
쿼리 2 (사용자 정의 필드 값! = 예) :
$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
)
);
결합 된 쿼리 :
이에 대한 도움을 얻기 위해 코덱 을 살펴 보았지만 다음 쿼리는 작동하지 않습니다.
$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
)
);
결합 된 쿼리에서 내가 뭘 잘못하고 있습니까?
[업데이트] : 이제 3.1이 릴리스되었으므로 위의 결합 된 쿼리는 여전히 작동하지 않습니다. 나는 정확하게 정렬되지 않은 결과를 얻습니다.
[업데이트] : var_dump($wp_query->request)
다음을 제공합니다.
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"
meta_query
매개 변수는 3.1에서 새로 출시되었지만 곧 출시 될 예정이지만이 안정적인 매개 변수없이 현재 안정적인 버전은 여전히 3.0.5입니다.