我正在制作一个页面,其中显示了按日期和时间排序的广播节目列表。radioshow是一种自定义posttype,包含名称、图片、描述和日期/时间信息。每天有不同数量的广播节目。
列表显示和排序正确,但我希望在新的一天开始时显示一个工作日,以便列表更具可读性。
有没有办法对照前一个项目测试循环中当前项目的日期?所以我可以测试日期是否已更改,然后回显一次工作日?
其他信息:我查看了\\u date()函数来完成此操作。但是,此函数仅返回自定义帖子本身创建的日期,而不是显示时的日期字段。该日期是一个自定义字段,与投递日期不同。
编辑:这是工作代码,基于@s\\u ha\\u dum的示例,该示例使工作日在循环中只显示一次,只要它在同一日期。
<?php $args = array(
\'post_type\' => \'programme\',
\'posts_per_page\' => 12,
\'orderby\' => \'prog_order\',
\'order\' => \'ASC\',
\'meta_query\' => array(
array(
\'key\' => \'date\',
\'value\' => \'\',
\'compare\' => \'LIKE\'
),
array(
\'key\' => \'time\',
\'value\' => \'\',
\'compare\' => \'LIKE\'
)
)
);`
$the_query = new WP_Query( $args ); ?>
<?php if ( $the_query->have_posts() ) {
$post_date = \'\';
// setlocale(LC_TIME, \'nl_NL\');
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php $date = DateTime::createFromFormat(\'Ymd\', get_field(\'date\')); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(\'index-card row\'); ?>>
<?php
if ($post_date != $date) {
?>
<div class="weekday"><h3><?php echo $date->format(\'l\'); ?></h3></div>
<?php
$post_date = $date;
}
?>
<header class="medium-4 columns text-center">
<div class="prog-time"><p><i class="fa fa-calendar"></i> <?php echo $date->format(\'d/m/Y\'); ?> om <?php the_field( \'time\' ); ?> uur</p></div>
<img src="<?php the_field( \'afbeelding\' ); ?>" alt="" class="prog-img">
<p>Presentatie:<br /><?php the_field( \'presenter\' ); ?></p>
</header>
<div class="entry-content medium-8 columns">
<h4 class="prog-title"><?php the_title(); ?></h4>
<h4 class="prog-sub subheader"><?php the_field( \'name\' ); ?></h4>
<div class="prog-desc"><?php the_field( \'description\' ); ?></div>
</div>
<hr>
</article>
<?php
endwhile;
}
?>
最合适的回答,由SO网友:s_ha_dum 整理而成
你需要这样的东西:
$args = array(
\'post_type\' => \'post\'
);
$q = new WP_Query($args);
if ($q->have_posts()) {
$date = \'\';
while ($q->have_posts()) {
$q->the_post();
$m = get_post_meta($post->ID,\'field_id\',true);
// var_dump($m);
if ($date != $m) {
// if $m is a strtotime compatible string
echo date(\'l\',strtotime($m));
$date = $m;
}
echo \'<br>\';
the_title();
echo \'<br>\';
echo str_repeat(\'-\',200);
echo \'<br>\';
}
}
不过,很大程度上取决于自定义元字段中“日期/时间信息”的格式,而您没有指定。我也不确定每个帖子的meta\\u键是否唯一。我想是的。