我为WordPress设置了一个循环,它从自定义字段(日期选择器)中获取日期并将其传递给数组。我需要从该数组中确定未来最近的日期(即将到来的日期)。
<?php
$today = current_time('m/d/Y');
$args=array(
'meta_key' => 'opening',
'orderby' => 'meta_value',
'order' => 'ASC',
'posts_per_page' => -1,
'post_type' => 'event',
);
$query = new WP_Query($args);
?>
<?php if($query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
<?php
$date = DateTime::createFromFormat('Ymd', get_field('opening'));
$dates[] = $date->format('m/d/Y');
endwhile; endif; wp_reset_postdata();
print_r($dates);
?>
并将其传递给javascript。
$('#tl').timeline({
startItem : '$resultOfUpcomingDateEvaluation',
});
请给我建议,谢谢你抽出时间。
找到了一个解决方案,有点脏,所以如果有人有一个更优雅的解决方案,那就太好了。
我用类似的设置编写了第二个循环,将posts限制为1,并将meta_value与获取current_time的var进行比较。然后,我用一个隐藏它的类(不是优雅的)将结果包装在div中。
<?php
$today = current_time('Ymd');
$args=array(
'meta_key' => 'opening',
'orderby' => 'meta_value',
'order' => 'ASC',
'posts_per_page' => 1,
'post_type' => 'event',
'meta_query' => array(
'key' => 'opening',
'compare' => '>=',
'value' => $today,
)
);
$query = new WP_Query($args); ?>
<?php if($query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
<?php
$date = DateTime::createFromFormat('Ymd', get_field('opening'));
$upcoming = $date->format('d/m/Y');
endwhile; endif; wp_reset_postdata();
echo '<div class="hide" id="upcomingdiv">';
echo $upcoming;
echo '</div>';
?>
之后,在我的javascript文件中,我通过ID获取元素,并获取包含循环结果的div的.textContent,并将其存储到一个变量中。
var setupUpcoming = document.getElementById("upcomingRef");
var upcoming = setupUpcoming.textContent;
最后,我将变量传递给startItem。
$('#tl').timeline({
startItem : upcoming,
});