我正在及时使用All-in-One Event Calendar,我想在单独的页面上的旋转木马中显示events Calendar中即将到来的事件,我需要获取事件信息。
我正在使用ai1ec helpers和get\\u events\\u between来获取特定日期范围内的事件(从今天到一年后),并且我可以在数组中看到(从get\\u events\\u between循环到get post ID),我获得了正确数量的事件(每个事件都是一个对象)。
然后,我使用WP查询显示Ai1ec\\u Events\\u Helper的信息。我可以得到开始日期、时间等。
您可以在此处看到代码:http://pastebin.com/dhJjyw1y
然而,问题是,即使事件数组包含50多个事件,我从我的WP查询中只得到了7个-我创建的7个单独事件,显示了事件的原始开始日期(即,如果一个事件开始于3月6日,并且每月重复一次,我只得到一次日期为3月6日的事件)。指向每个事件详细信息页面的链接还链接到原始日期(“URL中的instance\\u id=“为空”)。
有人知道我如何获得每个事件的每个实例,以便显示所有50多个事件吗?
谢谢
预计到达时间:
这是我从第一个数组对象的$get\\U事件中获得的输出:
数组(56){[0]=>对象(Ai1ec\\U事件)#389(51){[“post”]=>对象(stdClass)#388(23){[“ID”]=>字符串(3)”220“[“post\\U author”]=>字符串(1)”1“[“post\\U date”]=>字符串(19)”2013-03-06 14:00:18“[“post\\U date\\U gmt”]=>字符串(19)”2013-03-06 19:00:18“[“post\\U content”]=>字符串(440()“Lorem ipsum dolor sit amet,concetetur adipiscing elit。Vivamus nunc dolor,accumsan quis调味品ut,quis tortor。concetetur adipiscing elit。Etiam odio purus,imperdiet ac。Duis quis risus a odio sodales bibendum。在adipist quam est。”[“post\\u title”]=>string(17)“另一个新事件”[“post\\u摘录”]=>string(0)”“[“post\\u status”]=>string(7)”发布“[“comment\\u status”]=>string(6)”关闭“[“ping\\u status”]=>string(6)”关闭“[“post\\u password”]=>string(0)”“[“post\\u name”]=>string(17)“另一个新事件”[“to\\u ping”]=>string(0)”“[“pinged”]=>string(0)”“[“post\\u”修改“]=>字符串(19)”2013-03-07 14:21:45”[“post\\u modified\\u gmt”]=>string(19)”2013-03-07 19:21:45“[“post\\u content\\u filtered”]=>string(0)”“[“post\\u parent”]=>string(1)”0“[“guid”]=>string(94)”…com/wp/?post\\u type=ai1ec\\u event&;p=220&;instance\\u id=“[“menu\\u order”]=>string(1)”0“[“post\\u type”]=>string(11)“ai1ec\\u event”[“post\\u mime类型”]=>字符串(0)“[“comment\\u count”]=>字符串(1)“0”}[“post\\u id”]=>字符串(3)“220”[“instance\\u id”]=>string(3)“582”[“start”]=>int(1363838400)[“end”]=>int(1363924800)[“start\\u truncated”]=>NULL[“end\\u truncated”]=>NULL[“allday”]=>string(1)“1”[“instant\\u event”]=>NULL[“recurrence\\u rules”]=>string(23)”FREQ=每月;BYday=第三[“exception\\u rules”]=>string(0)”“[“recurrence\\u dates”]=>string(0)”“[“exception\\u dates”]=>string(0)”“[“Vincement”]=>string(12)”地点“[“country”=>string(9)”澳大利亚“[“address”=>string(44)”地址,霍普岛昆士兰,昆士兰,昆士兰”[“city”=>string(11)”霍普岛“[“province”=>string(10)”昆士兰”[“postal\\u code”]=>string(4)”4212“[“show\\u map”]=。>字符串(1)“1”[“show\\u coordinates”]=>NULL[“longitude”]=>NULL[“latitude”]=>NULL[“facebook\\u eid”]=>NULL[“facebook\\u user”]=>NULL[“facebook\\u status”]=>NULL[“contact\\u name”]=>string(12)“contact\\u phone”]=>string(12)“123-456-7890”[“contact\\u email”]=>string(10)”[email protected]“[”contact\\u url“]=>NULL[”cost“=>string(6)”$10.00“[”ticket\\u url“]=>NULL[”ical\\u feed\\u url“]=>string(0)”“[”ical\\u source\\u url“]=>string(0)”“[”ical\\u organizer“]=>NULL[”ical\\u contact“]=>NULL[”ical\\u uid“=>string(0)”“[”tags“]=>NULL[”categories“=”NULL[”feed“]=>NULL[”categority\\u colors“:”Ai1ec\\u Event“:private]=>NULL[“color\\u style”:“Ai1ec\\u Event”:private]=>NULL[“category\\u text\\u color”:Ai1ec\\U事件:private]=>NULL[“category\\U bg\\U color”:“Ai1ec\\U事件”:private]=>NULL[“faded\\U color”:“Ai1ec\\U事件”:private]=>NULL[“tags\\U html”:“Ai1ec\\U事件”:private]=>NULL[“category\\U blocks\\U html”:“Ai1ec\\U事件”:private]=>NULL[“category\\U inline\\U html”:“Ai1ec\\U事件”:private]=>NULL[“category\\U inline\\U html”:“Ai1ec\\U事件”:private”=>NULL[“Ai1ec\\U is\\U is\\u multiday“:“Ai1ec\\U事件”:private]=>NULL[“请求”:“Ai1ec\\U事件”:private]=>空}
事件只有填充数据。正如我链接到的代码中的foreach循环所示,我可以获取事件的post ID和实例ID,将它们存储在数组中,然后打印出来。因此,我可以看到它捕获了7个以上的事件,post ID重复,实例ID是唯一的。
我确实尝试将foreach循环修改为两个,以尝试遍历对象(如果这样做的话?!),但它不会显示实例ID之类的内容,尽管我可以获得文章标题和guid。此外,在对象中,它没有正确的事件开始/结束日期([“start”]=>int(1363838400)[“end”]=>int(1363924800)),因此我想知道是否必须使用WP查询和Ai1ec\\U events\\U Helper才能以正确的格式获得日期?
预计到达时间2:
在仔细了解了$get\\u events实际上给了我什么之后,我将上面粘贴栏中的foreach循环修改为:
foreach($get_events as $event) {
echo \'<p>Event: \' . $event->post->post_title . \'<br />\';
echo \'ID: \' . $event->post->ID . \'<br />\';
echo \'Instance: \' . $event->instance_id . \'<br />\';
echo \'Guid: \' . $event->post->guid . \'<br />\';
echo \'Link: <a href="\' . $event->post->guid . $event->instance_id . \'">Go to event</a></p>\';
}
我能够获取事件标题、ID、实例ID、GUID,并将GUID和实例ID组合在一起,以生成正确事件的正确URL,而无需使用WP查询。耶!它们似乎也按日期进行了正确的排序(尽管全天事件都显示在第一位)。
我可以通过$event->start和$event->end获取事件的日期和时间,并通过date()函数运行它们。
我似乎已经回答了我自己的问题。。。完成后,我会将我的最终代码作为答案发布。
最合适的回答,由SO网友:CourtFantinato 整理而成
终于有机会发布我的解决方案了。请注意,事件首先显示全天事件(如果有)。不幸的是,我不知道如何解决这个问题,因为它是在一个插件文件中的SQL查询中以这种方式编码的(甚至在文件中注释说全天事件都是第一个)。
我还使用收集到图像数据属性中的事件信息,就像使用Cycle2的旋转木马一样。但是,您可以更改该部分以呼出信息,或者以您想要的格式对其进行格式化。
如果其他人遇到需要从AI1EC插件获取事件的情况,我希望这对他们有所帮助!
<?php
// Gets localized time
$time = $ai1ec_events_helper->gmt_to_local( Ai1ec_Time_Utility::current_time() );
$bits = $ai1ec_events_helper->gmgetdate( $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, $filter, $spanning = false);
date_default_timezone_set(\'America/Toronto\'); // Match timezone settings in WP
// For each event
foreach($get_events as $event) {
// Event ID
$eventID = $event->post->ID;
// Event Title
$eventTitle = $event->post->post_title;
// Event URL
$eventURL = $event->post->guid . $event->instance_id;
// Event Date
$eventMonth = date( \'M\', $event->start );
$eventDay = date( \'d\', $event->start );
// Event Image
$imgID = get_post_thumbnail_id( $eventID );
// Event Time
if( $event->allday == 1 ) {
$timeSpan = \'All Day\';
} else {
$startTime = date( \'g:ia\', $event->start );
$endTime = date( \'g:ia\', $event->end );
$timeSpan = $startTime . \' - \' . $endTime;
}
$attr = array(
\'alt\' => get_post_meta( $imgID , \'_wp_attachment_image_alt\', true ),
\'data-name\' => $eventTitle,
\'data-month\' => $eventMonth,
\'data-day\' => $eventDay,
\'data-time\' => $timeSpan,
\'data-url\' => $eventURL
);
echo get_the_post_thumbnail( $eventID, \'full\', $attr );
}
?>