2017-08-08 42 views
0

我試圖通過郵政類型優先搜索結果,使用pre_get_posts鉤 - track帖子類型結果administration帖子類型結果。 我不確定是否可以用$query->set('orderby', 'type')完成。在WP_Query中使用相同的參數會有效,但我想避免這種情況。

這是全功能:

function tcb_pre_get_posts($query) { 
    if (is_admin() || ! $query->is_main_query()) 
     return; 

    if (is_search()) { 
     $query->set('post_type', array('track', 'administration') ); 
     $query->set('posts_per_page', 15); 
     $query->set('orderby', 'type'); 
     // orderby 'post_type' did not work as well 
    } 
} 

add_action('pre_get_posts', 'tcb_pre_get_posts', 1); 

Altough trackpost_type陣列中administration之前寫的,在結果我看到administrationtrack之前。

+0

檢查此鏈接https://開頭的WordPress .stackexchange.com/questions/91890/add-multiple-order-with-pre-get-posts – vel

+0

你的代碼到底有什麼問題?它看起來像是在做你想要的東西?你能描述一下你的期望嗎? – Und3rTow

+0

Und3rTow,謝謝你的評論。剛剛編輯了這個問題。 – yuvalsab

回答

1

好像你正在尋找改變其顯示您的自定義文章類型的order,對於你可以指定任何ASCDESC使用$query->set('order','ASC');

function tcb_pre_get_posts($query) { 
    if (is_admin() || ! $query->is_main_query()) 
     return; 

    if (is_search()) { 
     $query->set('post_type', array('track', 'administration') ); 
     $query->set('posts_per_page', 15); 
     $query->set('orderby', 'type'); 
     $query->set('order', 'ASC'); // or DESC 
    } 
} 

add_action('pre_get_posts', 'tcb_pre_get_posts', 1);