2014-03-05 23 views
1

我有什麼顯示每個自定義後類型最新的帖子與pre_get_posts


在我的頭版我已成功地改變了頭版的主要查詢,以顯示我的自定義文章類型與「pre_get_posts 「是這樣的:

function custom_post_types_in_home_loop($query) { 

    if (! is_admin() && is_home() && $query->is_main_query()) { 
     $query->set('post_type', array('member', 'press', 'calendar_event')); 
    } 

    return $query; 

} 

add_filter('pre_get_posts', 'custom_post_types_in_home_loop'); 

我想要什麼


問題是,有些帖子類型比其他帖子有更多的帖子,所以我想每個帖子類型只顯示3帖子,以獲得循環中的一些變化。

我已經試過


thisthis答案IVE一些幫助成功地做到這一點,但什麼也沒有發生,我究竟做錯了什麼?

function custom_post_types_in_home_loop($query) { 

    if (! is_admin() && is_home() && $query->is_main_query()) { 
     $query->set('post_type', array('member', 'press', 'calendar_event')); 

     if ($query->get('post_type') == 'member') { 
      $query->set('posts_per_page', 3); 
     } 

     /* And the same 'if' statement for 'press' and 'calendar_event' */ 
    } 

    return $query; 

} 

add_filter('pre_get_posts', 'custom_post_types_in_home_loop'); 

回答

1

您在主查詢設置post_typearray。然後將其與string進行比較。這些條件都不是真的,因此沒有執行。

如果你只是想限制查詢的數量,並選擇一個隨機的順序,你可以這樣做,

$query->set('posts_per_page', 9); 
$query->set('orderby', 'rand); 

這會給你9個員額,各3只,在不同的自定義文章類型之間隨機choosen 。

爲了將不同類型保存在一起,您需要構建一個更復雜且資源密集的groupby查詢。如果你需要這個,我會建議爲每個post_type建立3個不同的自定義循環。

+0

感謝您的回答,現在我看到我的錯誤與數組/字符串比較,並且顯然不工作..我設法解決問題與另一種方法來幫助這個答案http://wordpress.stackexchange。 COM/A/71582 – Rocaboca

相關問題