一体式事件日历:定制查询-获取每个事件实例

时间:2013-03-14 作者:CourtFantinato

我正在及时使用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()函数运行它们。

我似乎已经回答了我自己的问题。。。完成后,我会将我的最终代码作为答案发布。

1 个回复
最合适的回答,由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 );
    }
?>

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post

一体式事件日历:定制查询-获取每个事件实例 - 小码农CODE - 行之有效找到问题解决它

一体式事件日历:定制查询-获取每个事件实例

时间:2013-03-14 作者:CourtFantinato

我正在及时使用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()函数运行它们。

我似乎已经回答了我自己的问题。。。完成后,我会将我的最终代码作为答案发布。

1 个回复
最合适的回答,由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 );
    }
?>

相关推荐

Sorting past events by month

我有一个网站,列出了即将发生的事件和过去发生的事件。在我的类别中,过去的事件。php模板,这是我如何以降序(从最新到最旧)显示过去事件的方式: <?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; $args = array( \'posts_per_page\' => 1