2012-07-18 87 views
5

我正在使用在這裏找到所有功能於一身的事件日曆:http://wordpress.org/extend/plugins/all-in-one-event-calendar/
我試圖僅顯示即將發生的事件(所以沒有過去的事件)使用WP_Query()函數。我看到有一個「wp_ai1ec_events」數據庫中的表和一個名爲列「開始」在YYYY-MM-DD HH開始時間:mm:ss格式。WordPress的所有功能於一身的事件日曆:僅顯示即將發生的事件

$frontpageevents='post_type=ai1ec_event&showposts=3&orderby=start&order=ASC&meta_value=yes'; 
$eventquery = new WP_Query($frontpageevents); 

我試圖加入「&:我可以用$ currentTime的= CURRENT_TIME(「MySQL的」)

這是我的查詢看起來像迄今獲得相同的格式當前時間start>'。$ currentTime添加到$ frontpageevents聲明的結尾處,但這不起作用。我希望如果有人知道如何處理這個問題。

回答

5

http://wordpress.org/support/topic/plugin-all-in-one-event-calendar-order-event-by-start-date?replies=3#post-2443756

我在尋找類似的東西。我發現上面的帖子應該幫助!

「事件是帖子,但是事件開始/結束日期=發佈日期當你進行查詢時,你必須做一個事件查詢,而不是發佈查詢,換句話說,你必須使用插件的API來檢索事件可以通過開始或結束日期排序感興趣的功能get_events_between()它位於Ai1ec_Calendar_Helper類的類位於:應用程序/幫手/類ai1ec個歷helper.php我修改你的代碼有點我。沒有測試過所以有可能是拼寫錯誤或其他錯誤,但邏輯是一樣的:http://pastebin.com/SNp4TJij

更新!

所以我真的得到了現在這個想通了......這是我建立以便讓今天,從今天至一年事件的代碼。


    global $ai1ec_calendar_helper, $ai1ec_events_helper; 

    // gets localized time 
    $bits = $ai1ec_events_helper->gmgetdate($ai1ec_events_helper->gmt_to_local(time())); 

    //sets start time to today 
    $start = gmmktime(0,0,0,$bits['mon'],$bits['mday'],$bits['year']); 

    //sets end time to a year from today i.e. $bits['year']+1 
    $end = gmmktime(0,0,0,$bits['mon'],$bits['mday'],$bits['year']+1); 

    //Look in class-ai1ec-calendar-helper.php for details 
    $get_events = $ai1ec_calendar_helper->get_events_between($start,$end); 

    //loop through results to get post_ids 
    foreach($get_events as $event): 
     $post_ids[] = $event->post_id; 
    endforeach; 

    // The New Events Query 
    $args = array(
     'posts_per_page' => 4, 
     'paged' => get_query_var('paged'), 
     'post_type'=> 'ai1ec_event', 
     'post__in' => $post_ids 
    ); 

    $events_added = new WP_Query($args); 

    // The Loop 
    while ($events_added->have_posts()) : $events_added->the_post(); 
     $event = Ai1ec_Events_Helper::get_event($post->ID); 
     //Your code here 
    endwhile; 
    wp_reset_postdata(); 

您也可以使用ARGS使用功能get_events_relative_to()的開始時間,對結果進行數量限制,頁偏移(這是在他們的意見用於ai1ec爲wp分頁不一樣),和過濾器...它返回一個事件對象的多維數組。我必須創建$ events = $ get_events ['events'],並在我的foreach中使用$ events來正確檢索post_ids。

我通過ai1ec-themes查看了如何顯示事件數據的示例。
echo apply_filters('the_content', $event->post->post_content);
返回經過HTML格式化喜歡在一個單一的活動頁面顯示事件信息。

+0

我試過使用該代碼。事件顯示在正確的時間範圍內,但是以錯誤的開始時間順序顯示(但爲了發佈日期) – Rosencruez 2012-09-07 22:53:12

1

的$ post_ids陣列已經是爲了通過起始日期。在您的$ args變量中添加'orderby'=>'post__in'

$args = array(
     'posts_per_page' => 4, 
     'paged' => get_query_var('paged'), 
     'post_type'=> 'ai1ec_event', 
     'post__in' => $post_ids, 
     'orderby' => 'post__in' 
    ); 
相關問題