从WordPress自定义帖子类型创建iCal订阅链接

时间:2014-04-01 00:59:54

标签: wordpress calendar google-calendar-api custom-post-type icalendar

我使用WordPress自定义帖子类型创建了自己的活动日历,我需要将日历订阅到Google日历和Mac OSX日历应用。 Mac日历工作正常,但谷歌有问题。

我使用此网站的脚本作为基础来创建自己的脚本来生成我的iCal文件:http://www.noeltock.com/web-design/wordpress/how-to-ical-with-custom-post-types/

我已经浏览了这个网站,试图确保我拥有所有必要的字段:http://www.kanzaki.com/docs/ical/

我还将生成的iCal文件与WP插件Events Calendar Pro生成的文件进行了比较。

当我点击Mac绝对链接(使用网络摄像头而不是http)时,它会启动应用并将文件中的事件加载完好。

当我点击Google链接(使用/ render?cid = feed)时,会打开一个标签,询问我是否要添加日历。我点击“是”,然后遇到错误消息,说我无法访问该日历。

以下是我生成的iCal文件的示例:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Site Name//NONSGML Events //EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Site Name
X-ORIGINAL-URL:Site URL
X-WR-CALDESC:Site Description

BEGIN:VEVENT
DTSTART;VALUE=DATE-TIME:20140401T070000
DTEND;VALUE=DATE-TIME:20140401T230000
DTSTAMP:20140326T001707
CREATED:20140103T041301
LAST-MODIFIED:20140325T150531
SUMMARY:April Fool's Day
CLASS:PUBLIC
DESCRIPTION:Blah blah blah
END:VEVENT

END:VCALENDAR

有人可以告诉我我错过了什么吗?我已经和我一起战斗了两个星期,我的客户想要启动他的网站。提前谢谢!

1 个答案:

答案 0 :(得分:1)

你在设置标题吗?

header( 'Content-Type: text/Calendar' );
header( 'Content-Disposition: inline; filename=calendar.ics' );

对于Google,您可以构建查询字符串链接。我正是这样做的,而且效果很好。

$google => array(
                'label' => 'Google',
                'icon'  => get_template_directory_uri() . '/images/common/ico_google.png',
                'url'   => 'http://www.google.com/calendar/event?action=TEMPLATE&trp=false'
                    . '&text='    . $title
                    . '&details=' . $description
                    . '&dates='   . $date_start->format( $date_format )
                    . '/'         . $date_end->format( $date_format ),
            );

<a href="<?php echo esc_url( $google['url'] ) ?>" class="<?php echo esc_attr( $google['url'] ) ?>" rel="external" target="_blank">