按优先级从类别获取帖子

时间:2017-01-29 作者:Arif Khan

我想从事件自定义帖子类型中获得3篇帖子。但我想按类别优先级来做。如果“特色”类别有3个即将到来的事件,那么我想显示其中的3个帖子,如果“特色”类别没有3个即将到来的事件,那么我想从其他类别+没有任何类别的帖子中获取帖子。

最终结果将返回3个即将到来的事件。对于如何在WP\\u查询中添加该条件参数,我有点困惑。

当前代码(最多只能从特色类别返回3篇帖子)-

$events_args = array(
      \'post_type\'     => \'ctc_event\',                
      \'meta_query\' => array(
        array(
          \'key\' => \'_ctc_event_end_date\',
          \'value\' => date_i18n( \'Y-m-d\' ),
          \'compare\' => \'>=\',
          \'type\' => \'DATE\'
        ),
      ),
      \'meta_key\'      => \'_ctc_event_start_date_start_time\',
      \'meta_type\'     => \'DATETIME\',
      \'orderby\'     => \'meta_value\',
      \'order\'       => \'ASC\',
      \'posts_per_page\' => 3,
      \'tax_query\' => array(
          array(
              \'taxonomy\' => \'ctc_event_category\',
              \'field\'    => \'slug\',
              \'terms\'    => \'featured\',
          ),
      ),
    );

$events = new WP_Query( $events_args );
提前谢谢。

1 个回复
SO网友:Johansson

你可以先从你的特色分类中获取帖子,然后检查它是否有帖子。如果是,您将显示它们。

如果没有,您将进行另一个查询,从随机类别中获得3篇文章(如您所述),并显示它们。

$events_args = array(
            // include the code in your question here 
);
$events = new WP_Query( $events_args );
if ($events->have_posts()){
     while ($events->have_posts()) : the_post();
          // your loop code here
     endwhile;
} 
if ((3-($events->found_posts)) > 0) {
     wp_reset_postdata();
     $remaining = 3 - ($events->found_posts);
     $random_args = array(
         // your desired array of attributes, set \'posts_per_page\' to $remaining
     );
     $random_posts = new WP_Query($random_args);
     while ($random_posts->have_posts()) : the_post();
         // your loop code here
     endwhile;
}

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?