我正在使用此处找到的多功能一体机活动日历:http://wordpress.org/extend/plugins/all-in-one-event-calendar/
我正在尝试使用WP_Query()函数仅显示即将发生的事件(因此没有过去的事件)。我看到数据库中有一个“wp_ai1ec_events”表和一个名为“start”的列,其开始时间为yyyy-mm-dd hh:mm:ss格式。我可以使用 $ currentTime = current_time('mysql')
这是我的查询到目前为止的样子:
$frontpageevents='post_type=ai1ec_event&showposts=3&orderby=start&order=ASC&meta_value=yes';
$eventquery = new WP_Query($frontpageevents);
我尝试将'& start>'。$ currentTime添加到$ frontpageevents声明的末尾,但这不起作用。我希望有人知道如何处理这件事。
答案 0 :(得分:5)
我正在寻找类似的东西。我发现上面的帖子应该有所帮助!
“事件是帖子,但事件开始/结束日期!=发布日期。当您进行查询时,您必须进行事件查询,而不是发布查询。换句话说,您必须使用插件的API来检索订购的事件通过开始或结束日期。感兴趣的函数是get_events_between()。它位于Ai1ec_Calendar_Helper类。该类位于:app / helper / class-ai1ec-calendar-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分页不同)和过滤器。 .it返回一个多维事件对象数组。我必须创建$ events = $ get_events ['events']并在我的foreach中使用$ events来正确检索post_ids。
我查看了ai1ec-themes以查找如何显示事件数据的示例
echo apply_filters( 'the_content', $event->post->post_content );
返回HTML格式化的事件信息,如单个事件页面中显示的内容。
答案 1 :(得分: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'
);