2012-07-18 82 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' 
    ); 
相关问题