2017-12-28 4 views
0

요청한 순서대로 게시물을 가져오고 싶습니다.Wordpress WP_Query 삭제 ORDER BY wp_posts.menu_order

운좋게도 쿼리 인수 -> orderby = 'post_name__in'이있었습니다.

하지만 다른 순서로 게시물을 가져옵니다.

그리고 쿼리의 요청이 표시됩니다. 여기

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID 
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_name 
IN (
    'post title 1', 
    'post title 2', 
    'post title 3', 
) 
AND wp_posts.post_type = 'post' 
AND ((wp_posts.post_status = 'publish')) 
ORDER BY wp_posts.menu_order, 
FIELD( 
    wp_posts.post_name, 
    'post title 1', 
    'post title 2', 
    'post title 3', 
) 
LIMIT 0, 9 

내가 ORDER BY wp_posts.menu_order 문제 것을 발견

.

삭제 한 다음 phpmyadmin에서 쿼리하면 제대로 작동합니다.

내가 원하는 순서로 게시물을 가져옵니다.

그래서 필터를 사용하여 & 필터 또는 다른 단어를 사용하여 어떻게 삭제할 수 있습니까?

답변

0

답변을 찾았습니다!

때문에 wp_posts.menu_order이 추가되었습니다. 유형은입니다. 이 플러그인에서

,

add_filter('posts_orderby', array($this, 'posts_orderby'), 99, 2); 
~ 
~ 
~ 
//check for ignore_custom_sort 
if (isset($query->query_vars['ignore_custom_sort']) && $query>query_vars['ignore_custom_sort'] === TRUE) 
    return $orderBy; 
if(trim($orderBy) == '') 
    $orderBy = "{$wpdb->posts}.menu_order " . $order; 
else 
    $orderBy = "{$wpdb->posts}.menu_order". $order .", " . $orderBy; 
~ 
~ 
return $orderBy; 

그래서, 난 내 쿼리 인수에 $args['ignore_custom_sort'] = true를 추가합니다.

그리고이 작품!

1

플러그인을 직접 변경하지 않는 또 다른 해결책은 포스트 유형 주문을 제거하는 것입니다. '직관적 인 맞춤 주문 우편 주문'이라는 또 다른 것을 발견했으며 주문을 원하지 않는 주문을 방해하지 않으며 더 완벽합니다.

+0

감사합니다. – RPF