在category.php WP_Query或pre_get_posts上有多个循环?

时间:2018-07-29 07:02:35

标签: php wordpress categories

我有一个普通的事件类别,特别是针对该类别,该事件的日期带有一个日期元框。

在该页面上的帖子列表category-events.php中,我需要即将发布的帖子首先显示在列表中,然后将过去的事件显示在之后。

所以我如何结合两个循环以吐出最先出现的帖子列表以及那些之后出现的过去事件的列表。

您可以结合使用pre_get_posts还是在category-events.php文件上使用两个WP_Query

pre_get_posts查询即将发生的事件...

 function events_query_order($query){
    if( ! is_admin() && $query->is_main_query()  ):
                $query->set( 'cat', '3' );//Specific Event Category
                $query->set( 'meta_key', 'event_date_picker' );
                $query->set( 'posts_per_page', -1 );
                $query->set( 'orderby', 'meta_value_num' );
                $query->set( 'order', 'ASC' );
                $meta_query = array(
                            array(
                                 'key' => 'event_date_picker',
                                 'compare' => '>',
                                 'value' => date("Y-m-d"),
                                 'type' => 'DATE'
                               )
                        );

                        $query->set( 'meta_query', $meta_query );


    endif;    
};

WP_Query查询过去的帖子

<?php 

$args = array( 
    'category_name' => 'events',
    'meta_key' => 'event_date_picker',
    'posts_per_page' => -1,
    'orderby' => 'meta_value_num',
    'order' => 'ASC',
    'meta_query'   => array(
        array(
          'key' => 'event_date_picker',
          'compare' => '<',
          'value' => date("Y-m-d"),
          'type' => 'DATE'
        )
      )

 );


$past_events_content = new WP_Query( $args );

if ( $past_events_content->have_posts() ) : 


?>

在尊重正常分页的同时,这是否甚至可以实现?

0 个答案:

没有答案