2011-08-30 120 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它的意义。

相关问题