2011-03-28 7 views
1

내 게시물은 사용자 정의 필드의 무리를 보유하고 있으며, 현재 나는 "오버 lenghtin"라는 다른 사용자 정의 필드가 "오버 아이폰에"워드 프레스 쿼리는

으로 정렬되고 도움이됩니다.

지나치 길이로 내 게시물을 계속 주문하고 싶지만 2 개의 게시물에이 필드의 값이 같으면 오버 랭킹으로 주문하고 싶습니다.

내 쿼리를 수정하거나이를 실행하는 함수를 추가하는 방법이 궁금합니다.

나는 $ wpdb-> get_results를 사용하는 쿼리 재 작성했습니다, 그래서 여기에 현재 쿼리에 의해

$loop = new WP_Query(array ('post_type' => 'new', 'orderby' => 'meta_value_num', 'meta_key' => 'over-length', 'meta_query' => array(array('key' => 'over-make', 'value' => 'Doral', 'compare' => 'LIKE')))); 

좋아하지만 난 여전히 2 개 개의 다른 사용자 정의 필드에 의해 주문에 대해 어떻게 이동하는 방법에 대한 약간의 혼란 스러워요 .

가 여기 내 새 쿼리의 '오버 lengthin'

나는이 지금 일 것 같다

$wpdb->get_results("SELECT * FROM $wpdb->posts, wp_postmeta WHERE wp_posts.ID = wp_postmeta.post_id AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'new' AND wp_postmeta.meta_value = 'Doral' ORDER BY"); 

지금 그때 내 사용자 정의 필드 '이상 길이'에 의해 주문해야, 여기 내 마지막 쿼리 : 그것은 하나 이상의 사용자 정의 필드에 올 때

$wpdb->get_results("SELECT * FROM $wpdb->posts 
LEFT JOIN $wpdb->postmeta AS overlength ON(
$wpdb->posts.ID = overlength.post_id 
AND overlength.meta_key = 'over-length' 
) 
LEFT JOIN $wpdb->postmeta AS overlengthin ON(
$wpdb->posts.ID = overlengthin.post_id 
AND overlengthin.meta_key = 'over-lengthin' 
) 
LEFT JOIN $wpdb->postmeta AS overmake ON(
$wpdb->posts.ID = overmake.post_id 
AND overmake.meta_key = 'over-make' 
) 
WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'new' AND overmake.meta_value = 'Doral' ORDER BY 0+overlength.meta_value DESC, 0+overlengthin.meta_value DESC"); 

답변

1

솔직히, 가장 쉬운 해결책은 대신 WP_Query의 $wpdb->get_results을 사용하는 것입니다.

가 현재

echo $GLOBALS['wp_query']->request; 

그럼 그냥 SQL을 업데이트하고 여기에서 개정 된 루프를 작성하는 단계를 수행하여 실행중인 같이 쿼리를 얻을 수 있습니다

:

+0

내 쿼리를 다시 작성했지만 orderby에 대한 도움이 필요합니다. – Adam

+0

올바른 방향으로 나를 가리켜 주셔서 감사합니다! – Adam