我有一个自定义的帖子类型“events”。每个事件(帖子)可以有多个日期。日期(日期、时间、位置)存储为数组。我需要一个query that creates a chronological list of all events 从元数据(事件可以发生多次)。
自定义元框如下所示:
wp\\U Posteta中的结果数据库条目具有meta_key
\'_events\\u termine\'具有以下内容meta_value
(使用WPAlchemy):
a:1:{s:12:"termin_group";a:2:{i:0;a:3:{s:11:"termin_date";s:10:"2011/03/14";s:11:"termin_time";s:5:"19.30";s:15:"termin_location";s:15:"Max-Reger-Halle";}i:1;a:3:{s:11:"termin_date";s:10:"2011/03/15";s:11:"termin_time";s:5:"20.00";s:15:"termin_location";s:15:"Max-Reger-Halle";}}}
我使用以下代码显示单个事件的日期:
<table>
<?php global $events_meta_termine;
$meta = get_post_meta(get_the_ID(), $events_meta_termine->get_the_id(), TRUE);
foreach ($meta[\'termin_group\'] as $termin)
{ ?>
<tr>
<td><?php echo mysql2date(\'D\', $termin[\'termin_date\'], true); ?></td>
<td><?php echo mysql2date(\'j. F Y\', $termin[\'termin_date\'], true); ?></td>
<td><?php echo $termin[\'termin_time\']; ?> Uhr</td>
<td><?php echo $termin[\'termin_location\']; ?></td>
</tr>
<?php } ?>
</table>
输出如下所示:
所以一切都很好,只是我不知道如何创建一个页面,按时间顺序列出所有事件(标题、日期、位置),其中单个事件可以发生多次。
非常感谢您的帮助!
(很抱歉,我以前问过类似的问题,但我走到了死胡同,不得不重新开始。)
最合适的回答,由SO网友:Christoph 整理而成
以下是最终对我起作用的代码:
<?php
global $events_meta_termine;
$today = getdate();
$my_query = new WP_Query(\'post_type=events&posts_per_page=-1&monthnum=\'.$today["mon"]);
$events=array();
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;
$meta = get_post_meta(get_the_ID(), $events_meta_termine->get_the_id(), TRUE);
foreach ($meta[\'termin_group\'] as $termin)
{
$event=array();
$event[\'title\']=get_the_title();
$event[\'date\']=$termin[\'termin_date\'];
$event[\'time\']=$termin[\'termin_time\'];
$event[\'location\']=$termin[\'termin_location\'];
$events[]=$event;
}
endwhile;
wp_reset_query();
$i=0;
usort($events, "cmp");
function cmp($a, $b){
return strcmp($a[\'date\'],$b[\'date\']);
} ?>
<table>
<?php $current_month=\'\';
foreach ($events as $event){
if ($current_month!=mysql2date(\'F Y\', $event[\'date\'], true))
{
$current_month=mysql2date(\'F Y\', $event[\'date\'], true);
echo \'<tr><td colspan="5">\'.$current_month.\'</td></tr>\';
} ?>
<tr>
<td><?php echo $event[\'title\']; ?></td>
<td><?php echo mysql2date(\'D\', $event[\'date\'], true); ?></td>
<td><?php echo mysql2date(\'j. F Y\', $event[\'date\'], true); ?></td>
<td><?php echo $event[\'time\']; ?> Uhr</td>
<td><?php echo $event[\'location\']; ?></td>
</tr>
<?php } ?>
</table>