我在 WP 循环中使用 DateTime 函数,将一系列日期附加到每个帖子(开始日期到结束日期),然后可以使用 jQuery 日历将其过滤掉。唯一的问题是,每个帖子都被赋予相同的日期,所有帖子都采用第一个帖子的日期,而不是有自己的个人日期。
PHP:
<?php
$args = array(
'post_type' => array( 'title01' ),
'order' => 'asc',
'orderby' => 'title',
'posts_per_page' => -1
);
$loop = new WP_Query( $args );?>
<?php while ( $loop->have_posts() ) : $loop->the_post();?>
<a href="<?php the_permalink(); ?>">
<div class="grid-block-calendar" data-value="<?php $newBegin = DateTime::createFromFormat('dnY', get_field('title01_date_select'));
$newEnd = DateTime::createFromFormat('dnY', get_field('exhibition_date_end'));
$newEnd = $newEnd->modify( '+1 day' );
$newDaterange = new DatePeriod($newBegin, new DateInterval('P1D'), $newEnd);
foreach($newDaterange as $newDate){
echo $newDate->format("jnY") . " ";
} ?>">
</div>
</a>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
<?php
$args = array(
'post_type' => array( 'title02' ),
'order' => 'asc',
'orderby' => 'title',
'posts_per_page' => -1
);
$loop = new WP_Query( $args );?>
<?php while ( $loop->have_posts() ) : $loop->the_post();?>
<a href="<?php the_permalink(); ?>">
<div class="grid-block-calendar" data-value="<?php $begin = DateTime::createFromFormat('dnY', get_field('title02_date_select'));
$end = DateTime::createFromFormat('dnY', get_field('title02_date_end'));
$end = $end->modify( '+1 day' );
$daterange = new DatePeriod($begin, new DateInterval('P1D'), $end);
foreach($daterange as $date){
echo $date->format("jnY") . " ";
} ?>">
</div>
</a>
<?php endwhile; ?>
例如,第一个帖子显示的日期范围介于 2013 年 5 月 5 日和 2013 年 9 月 9 日之间,而不是仅第一个帖子的日期范围,而是显示在data-value
所有帖子的日期范围内,但每个单独的帖子都有单独的开始日期和结束日期。
我所有的帖子都在同一日期有原因吗?我知道这可能很简单,但我无法弄清楚问题所在。