2011-08-30 85 views
1

所以我排除帖子是從博客頁面(類別4-11)幾個類別。WordPress的排除類別帖子,但保留每頁發佈數

我這樣做使用下面的代碼:

if (have_posts()) : while (have_posts()) : the_post(); 
    $category = get_the_category(); 


    if($category[0]->cat_ID > 11 || $category[0]->cat_ID < 4){ 
     continue; 
    } 

這可以用來排除從頁面的類別的職位,但它不會保留每頁帖子數爲10或不管它是在設置管理員。

我如何在Wordpress循環中跳過我在文章中忽略的帖子數,因此我排除了我不想要的類別帖子,而且還保留了每頁的帖子數量?

回答

0

最簡單的(但不是最有效率)的方式來做到這一點是通過使用category__in自定義查詢,以取代全球$wp_query ...

global $wp_query; 
$wp_query = new WP_Query(array("category__in"=>array(4,5,6,7,8,9,10,11))); 

...然後做循環...

while (have_posts()){ 
    the_post(); 

    //etc.. 
} 

這將使分頁準確,並且您可以依靠像next_posts_link()這樣的高級模板功能。

可能是一個更有效的方式(即不扔掉並更換$wp_query)它在執行之前會與原來的查詢一塌糊塗......

add_action('parse_query', 'my_parse_query'); 
function my_parse_query(&$q){ 
     //decide if you want to mess with the query.... 
     //if not, return 
     $q->set_query_var("category__in", array(4,5,6,7,8,9,10,11)); 
} 

my_parse_query每次都會查詢被調用,包括那些頁面和單個帖子,所以你將不得不添加一些邏輯的功能,只增加category__in它的意義。

相關問題