我在wordpress中有一个定制的日历列表器,它获取定制帖子类型的事件,该事件具有一个带有事件日期的ACF字段,并将其与今天的日期进行比较以将其列出。我想将帖子数限制为5个,但是通过在while循环中过滤掉5个事件的逻辑,较旧的事件也会进入过滤器并计入5个,因此最后比较时也将它们计算在内在,例如。如果我有2个较旧的事件,则if语句中仅显示3个事件。 这是代码:
$args = array(
'post_type' => 'events', 'meta_key'=>'date', 'orderby'=>'meta_value', 'order'=>'ASC', 'posts_per_page'=>5 );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
$title = get_the_title();
$maindate = DateTime::createFromFormat('Ymd', get_field('date'));
$today = DateTime::createFromFormat('Ymd', date('Ymd'));
if ( $maindate >= $today ) :
... +然后是带有元素的html代码
有什么主意,我该如何重组它?
答案 0 :(得分:1)
如果我对您的理解正确,那么您想列出5个即将发生的事件,而忽略旧的事件。现在,您可以在while循环中对其进行过滤,但可以在查询中更好地对其进行过滤。
ACF使用Wordpress元字段(请参见this link),因此您也可以在其中查询。这可以归结为这样:
$args = array(
'post_type' => 'events',
'meta_key'=>'date',
'meta_query' => [
['key' => 'date',
'value' => date('Y-m-d'),
'compare' => '>=']
],
'orderby'=>'meta_value',
'order'=>'ASC',
'posts_per_page'=>5 );