2013-09-24 80 views
0

我目前的代碼顯示cpt'events'的5個帖子。這是我使用的代碼:僅顯示未來事件(cpt)

//get post type ==> events 
global $post; 
$args = array(
     'post_type' => 'events', 
     'numberposts' => $data['home_events_count'], 
     'orderby' => 'meta_value', 
     'meta_key' => 'timestamp_earth_event_start_date', 
     'meta_query' => $meta_query 
); 

我想篩選出的職位(事件),他們的「timestamp_earth_event_start_date」比當前日期的。

我試着自己修改代碼,但仍顯示過去的事件。

任何幫助將不勝感激!

+0

添加濾鏡我更新這個問題什麼timestamp_earth_event_start_date指的是?這是什麼類型的領域,一個自定義領域? – SMacFadyen

+0

timestamp_earth_event_start_date是保存事件開始日期的自定義字段 – user2093301

+0

timestamp_earth?你是否保持你的功能開放,以便你可以支持你的代碼在其他星球上? – TravisO

回答

1

試試這一個傳遞查詢字符串

$numposts=$data['home_events_count']; 
    query_posts('post_type=events 
    &post_status=publish&numberposts=$numposts 
    &posts_per_page=1 
    &meta_key=timestamp_earth_event_start_date 
    &orderby=meta_value_num 
    &order=DESC') 

通過傳遞陣列

$args = array(
    'post_status' => 'publish', 
    'post_type' = 'events' , 
    'meta_key' => 'timestamp_earth_event_start_date', 
    'order' => 'DESC', 
    'orderby' => 'meta_value_num' 
); 
$event_posts = new WP_Query($args); 

其他選項,您可以爲查詢像

add_filter('posts_orderby', 'my_posts_orderby_date', 10, 2); 
function my_posts_orderby_date($orderby, $query) { 
    global $wpdb; 
    return " CAST($wpdb->postmeta.meta_value AS DATE) " . $query->get('order'); 
} 
+0

非常感謝你dianuj!我已經嘗試了所有3個,看起來第二個工作正常,但有一個小錯誤。它隱藏了過去的事件並顯示了未來的事件,但它也增加了一些額外的「事件」,沒有標題,描述或任何內容。這是鏈接到完整的代碼:http://pastebin.com/W50fnhWk – user2093301

+0

Sory這不清楚*「,但它也增加了一些額外的'事件'行,沒有標題,描述或任何」*和過去的事件沒有顯示,因爲如果你想要所有的事件帖子都有帖子的限制,那麼你必須將'nopaging'參數傳遞給'true',那麼你可以得到的所有事件的帖子,否則它會佔用帖子的默認限制 –

+0

查詢應該只顯示1個事件,因爲只有1個事件,是不是比當前日期的,而是這是我得到:

My Event
換句話說,代碼確實會過濾舊事件,但它仍會爲其他事件添加空條目。也許我的foreach有問題($ event_posts as $ post)? – user2093301

相關問題