2016-08-10 2 views
0

내 WP_Query 결과를 첫 번째 날짜와 시간의 두 개의 메타 필드별로 정렬하려고합니다. 그래서 효과적으로WP_Query orderby 여러 매개 변수가 작동하지 않습니다.

Date A 17:00 
Date B 18:00 
Date C 07:00 
Date B 10:00 
Date A 9:00 

Date A 9:00 
Date A 17:00 
Date B 10:00 
Date B 18:00 
Date C 07:00 

올 것이 내 현재 코드 : 그것은 현재 시간을 날짜별로 적절하게 내 결과를 정렬하는 것이 아니라

"post_type" => "event", 
"post_status" => "publish", 
"posts_per_page" => 25, 
"ignore_sticky_posts" => 0, 
"show_sticky" => true, 
"meta_query" => array(
    array(
    "key" => "_meta_event_start_date", 
    "compare" => ">=", 
    "value" => 0 
    ), 
    array(
    "key" => "_meta_event_start_time", 
    "compare" => ">=", 
    "value" => 0 
    ), 
), 
"order" => "ASC", 
"orderby" => "_meta_event_start_date _meta_event_start_time" 

(시간 형식 hh : mm (24hr)로 저장 됨). 이 작업을 수행하기 위해 쿼리를 어떻게 수정할 수 있습니까?

foreach 루프, SQL 쿼리 또는 심지어 필터를 사용하여 다른 응답을 보았습니다. 나는 불행히도 내가 사용하고있는 사이트가 검색 플러그인 인 Facet WP를 사용하고 검색 할 때 WP_Query가 데이터베이스와 출력 내용을 쿼리해야하므로 사용할 수 없습니다.

미리 감사드립니다.

+1

값, 그것은'orderby' 값의 필드 사이에 쉼표가 필요할 수 있습니다. ' "orderby"=> "_meta_event_start_date, _meta_event_start_time"'이 효과가 있습니까? – Hobo

+0

불행히도 그게 작동하지 않았다, 그냥 검색 기본값 – James

답변

0

난 당신이 메타 키가 주문하려고시피 - 당신이 WordPress 4.2의 변화에 ​​따라이 경우에 상당히 더 복잡한 구문을 사용해야 - 무언가를 아래와 같이 : 또한

"post_type" => "event", 
"post_status" => "publish", 
"posts_per_page" => 25, 
"ignore_sticky_posts" => 0, 
"show_sticky" => true, 
"meta_query" => array(
    "event_start_date" => array(
     "key" => "_meta_event_start_date", 
     "compare" => ">=", 
     "value" => 0 
    ), 
    "event_start_time" => array(
     "key" => "_meta_event_start_time", 
     "compare" => ">=", 
     "value" => 0 
    ) 
), 
"orderby" => array(
    "event_start_date" => "ASC", 
    "event_start_time" => "ASC" 
) 

- 단일 meta_key에 대한 이 SQL을 생성하기 때문에 당신이 ORDERBY 절에 사용한다는 것을 기억하는 가치가 주문하는 meta_value and meta_value_num

+0

되돌 렸어. 정말 고마워!! – James

관련 문제