我在wordpress网站上创建了自定义帖子。在这篇文章中,我创建了日期格式为YYYY-MM-DD的事件。 然后我想在我的网站上显示接下来的3个事件。
我创建了以下数组:
Array{
[0]=> Array(
[EventDate] => 2014/03/14
[TimestampEvent] => 1394582400
[DeltaEvent] => 22327
)
[1]=> Array(
[EventDate] => 2014/03/15
[TimestampEvent] => 1394582401
[DeltaEvent] => 22328
)
[2]=> Array(
[EventDate] => 2014/03/16
[TimestampEvent] => 1394582402
[DeltaEvent] => 22329
)
}
我想:
我已经对最后一点进行了整理。问题更多的是关于对事件进行排序。
到目前为止,我已经尝试过uksort()函数,但我无法使用它。
有什么想法吗?
编辑;
@Bram解决方案效果很好! 唯一的问题是Array $ next的结构是:
Array{
[0]=> Array(
[EventDate]=> 2014/03/16
[TimestampEvent] => 1394582402
[DeltaEvent] => 22329
)
}
如何从$ next数组中访问EventDate键?我已经尝试了$ next [0] [0],但令人惊讶的是没有工作。
重新编辑;
$next[$i][DateEvenement]
我差不多完成了!现在一切都在网站上显示,每个日期都很好!唯一的事情是,最近的3个日期按照它们在wordpress中添加的顺序显示。我的代码如下:
$my_query = new WP_Query('post_type=event');
while ($my_query->have_posts()) : $my_query->the_post();
for($i=0;$i<count($next);$i++){
if(get_field('date') == $next[$i][DateEvent]){ ?>
<div>
<h2><?php echo the_title(); ?></h2>
<p><?php echo the_content(); ?></p>
</div>
<?php
}
}
endwhile;?>
问题可能来自我的查询,但我不确定如何解决这个问题。
感谢您的帮助!
重新重新编辑;
@Myself
妈妈,我做到了!它的工作就像一个魅力。我只需修复我的查询。这是我使用的代码:
for($i=0;$i<count($next);$i++){
$args = array('numberposts' => 1,'post_type' => 'evenement','meta_key' => 'date','meta_value' => $next[$i][DateEvenement]);
$the_query = new WP_Query( $args );
if( $the_query->have_posts() ){
while ( $the_query->have_posts() ){
$the_query->the_post();
if(get_field('date') == $next[$i][DateEvenement]){ ?>
<div>
<h2><?php echo the_title(); ?></h2>
<p><?php echo the_content(); ?></p>
</div>
<?php
}
}
}
}?>
答案 0 :(得分:1)
未经测试,但是这样的事情会让你接近答案......
忽略已经发生的事件;
$new_data = array_filter($data, function ($a) { return $a['TimestampEvent']>time(); });
将我的未来事件从最近的事件排序到最远的事件;
usort($data, function ($a, $b) {
if ($a['TimestampEvent']==$b['TimestampEvent']) return 0;
return ($a['TimestampEvent'] < $b['TimestampEvent']) ? -1 : 1;
});
在我的网站上显示接下来的3个活动。
$next = array_slice($data, 0, 3);