【问题标题】:Wordpress Exclude Categories Posts but retain Post Count per pageWordpress 排除类别帖子但保留每页的帖子数
【发布时间】:2011-11-07 00:28:29
【问题描述】:

所以我排除的帖子是博客页面中的几个类别(类别 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 循环中跳过的帖子,我如何以编程方式将帖子计数减一,以便排除我不想要的类别帖子,但每页保留相同数量的帖子?

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    最简单(但不是最有效)的方法是使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 2021-08-07
      • 1970-01-01
      相关资源
      最近更新 更多