2013-01-23 73 views
1

我只希望類別中的最新帖子排除在首頁之外。應顯示來自同一類別的所有其他人。我似乎無法弄清楚這一點。這是迄今爲止我所得到的,但是它排除了頭版中的整個類別。如何僅排除某個類別中的最新帖子以顯示在WordPress的首頁上?

function exclude_category2($query) { 
if ($query->is_home) { 
$query->set('cat', '-1,-4,-36'); 
} 
return $query; 
} 
add_filter('pre_get_posts', 'exclude_category2'); 

感謝您的幫助!

+0

我建議您的訂單查詢結果按日期並從中刪除最新的帖子。 (根據訂單,刪除第一個或最新的項目) – gok

回答

0

你可以使用像template_redirect這樣的鉤子,使用array_shift像gok建議(有些時候他沒有真正說出如何去除)從全局$ posts數組中刪除頂層元素。在這種情況下,它看起來像這樣

add_action('template_redirect', function() { 
    global $posts; 
    array_shift($posts); 
}); 

但我認爲如果你把這個functions.php中,在WordPress的循環開始時一個更好的方法應該是這樣

add_action('loop_start', function($args) { 
    $args[0]->next_post(); 
}); 

,它會自動轉到下一篇文章,這意味着它會一直跳過第一篇文章。

如果您只想在特定頁面上執行此操作,請在該函數內使用相關的模板標籤,如is_home()if (is_home()) $args[0]->next_post();

如果您未使用PHP版本> = 5.3,則必須給該函數一個名稱,因爲較低版本的PHP不支持匿名函數。

相關問題