2013-11-28 2 views
0

나는 meta_value 및 ID를 사용하여 마지막 x posts posts를 가져 오도록 wp_query를 만들려고합니다. prop_featured 값은 1 또는 0 일 수 있습니다. prop_featured = 1을 첫 번째 것으로, 나머지는 prop_featured = 1 인 게시물 목록을 얻고 싶습니다.WP_Query orderby meta_key 및 id

  $args = array(
      'post_type'   => $type, 
      'post_status'  => 'publish', 
      'paged'    => 0, 
      'posts_per_page' => 10, 
      'meta_key'   => 'prop_featured', 
      'orderby'   => 'meta_value ID', 
      'order'    => 'DESC' 

     ); 

나는 또한이 솔루션은 필터와 함께 작동하도록했다 'orderby' => 'meta_value_num ID',

답변

0

'orderby' => 'meta_value ID',를 교체하려고 필터

  function my_order($orderby) { 
     global $wpdb; 
     $orderby = 'wp_postmeta.meta_value, wp_posts.ID DESC'; 
     return $orderby; 
     } 

    add_filter('posts_orderby', 'my_order'); 
    $recent_posts = new WP_Query($args); 
    remove_filter('posts_orderby', 'my_order'); 
0

를 사용해보십시오 : 여기 내 인수 배열입니다. 내 실수는 각 매개 변수 다음에 순서를 지정하지 않았다는 것입니다. wp_postmeta.meta_value 대신 wp_posts.ID DESC 'wp_postmeta.meta_value DESC, wp_posts.ID DESC'여야합니다.

 add_filter('posts_orderby', 'my_order'); 
     $recent_posts = new WP_Query($args); 
     remove_filter('posts_orderby', 'my_order'); 

    function my_order($orderby) { 
     global $wpdb; 
     $orderby = 'wp_postmeta.meta_value DESC, wp_posts.ID DESC'; 
    return $orderby; 
     } 

는 희망이 도움이 :

여기에 올바른 코드입니다. 내 마음에

+0

을 내가 한 - 같은 결과를 – Crerem

0

는 가장 쉬운 해결책은 다음과 같이 배열하여 초기 orderby를 대체하는 것입니다 :

$args = array(
    'post_type'  => $type, 
    'post_status' => 'publish', 
    'paged'   => 0, 
    'posts_per_page' => 10, 
    'meta_key'  => 'prop_featured', 
    'orderby'  => array('meta_value_num' => 'DESC', 'ID' => 'DESC') 
); 
관련 문제