自定义日期事件

时间:2016-03-06 00:45:14

标签: php wordpress advanced-custom-fields

需要一点帮助来纠正我的后备条件。我有3个不同的标签事件,发生,即将到来和过期。我在这里的当前代码设置为“发生事件”并且如果存在“当前没有发生的事件”则难以理解如何或在何处定位回退。如果我创建后备条件,它最终会复制“No Current Events Set”的消息。我应该在哪里放置条件以使后备不重复其消息。

<div role="tabpanel" class="tab-pane active" id="happening">
<?php
  if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
    // Check event record from ACF
    while ( have_rows('dtl') ) : the_row();
      $date = DateTime::createFromFormat('Ymd', get_sub_field('event_date'));
      $dateA = $date->format('Y-m-d');
      $dateB = date('Y-m-d');
    endwhile; 

    // Compare event record from ACF & current date
    if (strtotime($dateA) == strtotime($dateB)) :
  ?>
  <section class="section-contents"><?php get_template_part( 'templates/events', 'query' ); ?></section>
  <?php else : // fallback if there's no active date ?>
  <section class="section-contents"> <h5 class="text-center text-danger text-uppercase">No Current Events Set</h5> </section>
  <?php endif; // close strtotime
  endwhile; endif; wp_reset_postdata(); 
?>
</div>

1 个答案:

答案 0 :(得分:1)

你在循环中有你的其他条件,这意味着它会在你的时间比较失败的每次迭代时输出你的消息。你需要把它移到循环之外

 $x=false;
 if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
    // Check event record from ACF
    while ( have_rows('dtl') ) : the_row();
      $date = DateTime::createFromFormat('Ymd', get_sub_field('event_date'));
      $dateA = $date->format('Y-m-d');
      $dateB = date('Y-m-d');
    endwhile; 

    // Compare event record from ACF & current date
    if (strtotime($dateA) == strtotime($dateB)) :
        $x= true;
     ?>
        <section class="section-contents"><?php get_template_part( 'templates/events', 'query' ); ?></section>
  <?php endif; // close if strtotime... 
        endwhile;
  ?>
  <?php endif; // close if statement 
  wp_reset_postdata(); 
  if(!$x){ ?>
  <section class="section-contents"> <h5 class="text-center text-danger text-uppercase">No Current Events Set</h5> </section>
  <?php } ?>