2013-08-29 86 views
0

我想只顯示那些在當前日期或將來的事件。爲了展示活動中,我有這樣的代碼:PHP:while if if if語句爲true

<?php 
    $wp_query = new WP_Query(); 
    global $more; 
    // set $more to 0 in order to only get the first part of the post 
    $more = 0; 
    $wp_query->query(array('post_type' => 'events', 'posts_per_page' => 7, 'paged' => $paged, 'orderby' => 'menu_order', 'order' => 'ASC')); 

    while (($wp_query->have_posts())): $wp_query->the_post(); 
     get_template_part('content', 'event'); 
    endwhile; 
?> 

我嘗試添加「IF語句」來比較活動的開始日期與當前的日期,但它似乎並沒有工作。我已經嘗試了很多版本,但是這一個我認爲應該工作:

$wp_query->query(array('post_type' => 'events', 'posts_per_page' => 7, 'paged' => $paged, 'orderby' => 'menu_order', 'order' => 'ASC')); 
$OstartDate = get_post_meta($post->ID, '_event_start', TRUE); 
$today = date('d.m.Y'); 
while (($wp_query->have_posts()) && ($OstarDate < $today)): 
     $wp_query->the_post(); 
+2

您是否嘗試過使用某種日期限制的查詢比較postmeta的職位?這似乎是一個更好的方法來做到這一點,目前的做法的一個大問題是,您的頁面上可能會少於七個。另外,我認爲你沒有正確比較日期。你是陛下,你實際上是在做你想做的比較嗎? (例如,字符串「2013年1月1日」將在文本比較中評估爲少於2/1/2013) – manchicken

回答

0

second one你應該嘗試,

$OstartDate=get_post_meta($post->ID,'_event_start',TRUE);//check it will return a number 
if(time() > $OstartDate) 
{ 
    while ($wp_query->have_posts()): 
     $wp_query->the_post(); 
    ..... 
} 

a7-simple-events可以幫助你。

0

可以使用meta_query

$today = date('d.m.Y'); 
$args=array('post_type' => 'events', 'posts_per_page' => 7, 'paged' => $paged, 'orderby' => 'menu_order', 'order' => 'ASC', 'meta_query'   => array(
     array(
      'key' => '_event_start', 
      'value' => $today, 
      'type' => 'date', 
      'compare' => '<' 
     ) 
    )) ; 
    $wp_query = new WP_Query($args); 

while (($wp_query->have_posts()) ): 
     $wp_query->the_post(); 
     endwhile;