您无法更改DESC
到ASC
“在IF语句内”。此时已运行查询。我真的不明白代码的作用是什么。我真的没有看到代码产生您描述的模式。具体地说,我不明白短码字符串或for是什么,或者应该如何工作。但是,我可以复制结果。也许这会有帮助。
//GET THE CURRENT DATE
$current_date = date(\'F j, Y\');
$current_date = strtotime( $current_date );
$args = array(
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'post_type\' => \'post\',
\'post_status\' => \'publish\',
\'suppress_filters\' => true
);
$posts = get_posts( $args );
$expired = array();
// BUILD SHORTCODE CODE TO BE INSERTED
foreach($posts as $post){
$event_start_date=get_post_meta($post->ID,\'event-start-date\',true);
$event_end_date=get_post_meta($post->ID,\'event-end-date\',true);
if (empty($event_start_date) || empty($event_end_date)) continue;
$event_start=date(\'F j, Y\', $event_start_date);
$event_end=date(\'F j, Y\', $event_end_date);
$exp_date = strtotime( $event_end );
echo \'$exp_date > $current_date<br>\';
if( $exp_date > $current_date ) {
// Match:
// Event A • July 30, 2015
echo the_title(),\' • \',$event_end;
echo \'<br>\';
}
else {
array_unshift($expired, get_the_title().\' • \'.$event_end);
}
}
echo \'$expired<br>\';
if (!empty($expired)) {
echo implode(\'<br>\',$expired);
}
注意:如果不浏览一堆帖子并设置元字段(这将很枯燥),我就无法测试这一点,但我确信这是正确的。
编辑:我确实清理了一点代码,但它基本上是可行的。array_unshift
prepends 将项目添加到数组中,以便对原始项目进行排序DESC
然后创建的数组array_unshift
应该是相反的顺序。