使用php,我应该如何从数组中获取即将到来的日期并将其传递给javascript


Using php, how should I get the upcoming date from an array and pass it to javascript?

我为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,
});