2013-02-23 66 views
1

如何過濾掉日期比當前日期早的活動帖子?如果該事件已過期,我當前的代碼會將過期的類添加到事件中,但是因爲我需要顯示接下來的5個即將發佈的帖子,當前代碼實際上不顯示任何帖子帖子......這裏是我的代碼....過濾掉比當前日期早的事件帖子

<?php 

wp_reset_query(); 

query_posts(array('post_type' => 'events', 
      'showposts' => 5, 
        'meta_key'=>'event_date', 
      'orderby' => 'meta_value', 
      'order' => ASC)); 
      ?> 


      <?php while (have_posts()) : the_post(); ?> 

      <?php 

$eventDate = DateTime::createFromFormat('Ymd', get_field('event_date')); 
$currentDate = new DateTime(); 

      ?> 

      <li class="<? if ($eventDate < $currentDate) { echo "expired"; } ?>"> 
      <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4> 
      <span class="date"><strong>Event Date:</strong> <? echo $eventDate->format('d/m/Y'); ?></span></li> 

      <?php endwhile;?> 

懇求幫助別人:(

回答

1

OK回答你的問題。你可以比較使用meta_value日期,但記住,這些日期必須是在MySQL格式YYYY-MM-DD的比較所以你的自定義字段需要使用這種格式,或者你需要在你的代碼中重新格式化它,然後在你的代碼中使用它,這裏有一個關於Wordpress Stack的好主題;

https://wordpress.stackexchange.com/questions/18303/fail-to-compare-dates-in-meta-query

我沒有測試過這個,但它應該指向正確的方向;

  $eventDate = date('Y-m-t', get_field('event_date')); 
      $currentDate = date('Y-m-t'); 

      $args = array(
       'post_type' => 'events', 
       'posts_per_page' => '-1', 
       'orderby' => 'meta_value', 
       'meta_query' => array(
        'relation' => 'AND', 
        array(
        'key' => $eventDate, 
        'value' => $currentDate, 
        'compare' => '>', 
        'type' => 'DATE' 
        ) 
       ) 
      ); 

的另一種方式做到這一點,當然就是給所有的帖子拉進你的查詢,建立一個計數器並顯示出前五,其滿足您的標準;

<?php 
$counter = 0; 

query_posts(array('post_type' => 'events', 
        'posts_per_page' => -1, 
        'meta_key'=>'event_date', 
        'orderby' => 'meta_value', 
        'order' => ASC)); 

while (have_posts()) : the_post(); 

    $eventDate = DateTime::createFromFormat('Ymd', get_field('event_date')); 
    $currentDate = new DateTime(); 

    if (($eventDate > $currentDate) && $counter<5) : ?> 


     <li class="<? if ($eventDate < $currentDate) { echo "expired"; } ?>"> 
     <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4> 
     <span class="date"><strong>Event Date:</strong> <? echo $eventDate->format('d/m/Y'); ?></span></li> 

     <?php 
     $counter++; 

    endif; ?> 
+0

第二種方法工作完美,謝謝:) – Amesey 2013-02-23 17:08:36

+0

非常好,很高興它幫助:) – McNab 2013-02-23 17:24:07