Wordpress排除类别帖子但保留每页的帖子数

时间:2011-08-30 17:30:16

标签: wordpress

所以我从博客页面(类别4-11)排除帖子是几个类别。

我正在使用以下代码:

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循环中跳过的帖子,我如何以编程方式将帖子数减1,这样我就排除了我不想要的类别帖子,但每页还保留相同数量的帖子?

1 个答案:

答案 0 :(得分:0)

最简单(但不是最有效)的方法是使用$wp_query自定义查询替换全局category__in ...

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