2012-01-04 128 views
0

我的主頁上有一個帖子列表,按時間順序顯示所有帖子(DESC)。我想從此列表中排除特定類別的帖子。我如何去做這件事?我查詢...從帖子列表中排除帖子

<ul class="home-news"><?php 
         $args = array('numberposts' => 5, 'order'=> 'DESC', 'orderby' => 'post_date'); 
         $postslist = get_posts($args); 
         foreach ($postslist as $post) : setup_postdata($post); ?> 
          <li> 
          <a href="<?php the_permalink() ?>"> 
           <?php the_title(); ?> 
           <span>Posted on <?php the_date(); ?></span> 
          </a> 
          </li> 
         <?php endforeach; ?> 
        </ul> 

回答

0

解決方案1 ​​

以下內容添加到您的args陣列:

$args = array('category' => '-id', ...); 

哪裏id是要排除的類別的類別ID。該解決方案不會減少所請求的帖子數量。通過$category

<?php 
    $category = get_the_category(); 
    if ($category[0] -> cat_name == 'exclude_category_name') continue; 
?> 

注意,如果帖子有多個類別,你要循環:

解決方案2

添加以下的foreach環內的開始數組並檢查每個元素。

+0

這似乎是從最初被調用的5個帖子中排除來自'Events'的帖子。我希望排除的帖子在列表中替換爲符合條件的類別中較舊的帖子。 – 2012-01-04 02:36:30

+0

由於您的'$ postlist'是由'get_posts()'函數調用構建的,因此您無法使用此處的代碼將新條目添加到'$ postlist'中。你必須改變'get_posts()'的工作方式 – Julien 2012-01-04 03:00:51

+0

歡呼聲,我設法使用下面的代碼使查詢符合我的要求[link](http://justpaste.it/o0y) – 2012-01-04 03:09:57