我有一个普通的事件类别,特别是针对该类别,该事件的日期带有一个日期元框。
在该页面上的帖子列表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() ) :
?>
在尊重正常分页的同时,这是否甚至可以实现?