2017-04-24 1 views
0

내 머리를하고있는 문제가 있는데, pre_get_posts을 사용하여 내 게시물을 정렬하려고하고 있고 ACF 필드는 텍스트 필드입니다. 여기 ACF 텍스트 필드로 Wordpress 정렬 순서

내 코드는 다음 ACF의 설정에서

function my_pre_get_posts($query) { 

    // do not modify queries in the admin 
    if(is_admin()) { 

     return $query; 

    } 

    if($query->is_main_query() && $query->is_tax('locations')) { 

     $query->set('meta_key', 'level'); 
     $query->set('orderby', 'meta_value'); 
     $query->set('order', 'DESC'); 

    } 

    // return 
    return $query; 

} 

add_action('pre_get_posts', 'my_pre_get_posts'); 

, 텍스트로 설정되어이 텍스트의 값은 브론즈, 실버, 골드 등

UPDATE 나 '일 수있다 이제 레벨 필드를 숫자로 변경하고 1 = 청동, 2 = 은색 등으로 바꾸십시오.

그래도 나는 아무것도 얻지 못합니다.

아래를 실행하면 아무것도 반환되지 않습니다.

아이디어가 있으십니까?

답변

0

실수로 전체 쿼리를 덮어 쓸 수 있다고 생각합니다. 이 (안된) 조각을 시도해보십시오 $query이 반환되지 않도록

function my_pre_get_posts($query) { 
    if(! is_admin() && $query->is_main_query() && $query->is_tax('locations')) { 
     $query->set('meta_key', 'level'); 
     $query->set('orderby', 'meta_value'); 
     $query->set('order', 'DESC'); 
    } 
} 
add_action('pre_get_posts', 'my_pre_get_posts'); 

참고.

행운을 빈다.

+0

죄송합니다.이 기능은 작동하지 않습니다. – WebDevB

0

그래서 결국 functions.php 파일에서 택 소노 미 템플릿으로 바뀌 었습니다.

<?php 

if(isset($_GET['type'])) { 
    if($_GET['type'] == 'villa') { 
     $filter = array(
       'key'  => 'type_name', 
       'value' => 'Villa', 
       'compare' => '=', 
      ); 
    } elseif ($_GET['type'] == 'apartment') { 
     $filter = array(
       'key'  => 'type_name', 
       'value' => 'Apartment', 
       'compare' => '=', 
      ); 
    } elseif ($_GET['type'] == 'alls') { 
     $filter = array(
      'relation' => 'or', 
      array(
       'key'  => 'type_name', 
       'value' => 'Villa', 
       'compare' => '=', 
      ), 
      array(
       'key'  => 'type_name', 
       'value' => 'Apartment', 
       'compare' => '=', 
      ) 
     ); 
    } 
} 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'post_type' => 'properties', 
    'post_per_page' => 12, 
    'paged' => $paged, 
    'meta_key' => 'level', 
    'orderby' => 'meta_value', 
    'order' => 'DESC', 
    'tax_query' => array(
     array(
      'taxonomy' => 'locations', 
      'field' => 'slug', 
      'terms' => $term->slug, 
     ), 
    ), 
    'meta_query' => $filter 
); 
// the query 
$the_query = new WP_Query($args); ?> 

손가락이 다른 사람을 도움이 교차 :

여기 내 완성 된 코드입니다.