0

我在 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所有帖子的日期范围内,但每个单独的帖子都有单独的开始日期和结束日期。

我所有的帖子都在同一日期有原因吗?我知道这可能很简单,但我无法弄清楚问题所在。

4

1 回答 1

0

最有可能的问题是:get_field('title02_date_end')
如果你 var_dump 它里面是什么?

我建议像这样使用它:get_field('title02_date_end', get_the_ID())
看看 var_dumping 是否提供了其他东西。

于 2013-04-22T10:37:17.783 回答