2017-04-24 54 views
0

我有一個問題,正在做我的頭,我試圖使用pre_get_posts和ACF字段是一個文本字段來排序我的帖子。通過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'); 

在ACF配置,它設置爲文本,這個文本的值可以是銅,銀,金等

UPDATE 我現在我已經將等級字段更改爲一個數字並將其切換爲1 =青銅色,2 =銀色等。

不過,我什麼也沒得到。

當我運行下面的任何東西都會返回。

任何想法?

回答

0

我想你可能會無意中覆蓋整個查詢。試試這個(未經測試)片段:

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'); 

注意$query不會返回。

祝你好運!

+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); ?> 

手指交叉它可以幫助別人。