我不知道有什么特殊的插件可以做到这一点,有很多插件都有这个功能,但只有在作为一个整体事件系统使用时(据我所知,并不是特定于重力形式)。但是,幸运的是,使用PHP很容易:只需构造一个简单的字符串。
header("Content-Type: text/Calendar");
header("Content-Disposition: inline; filename=event.ics");
$ics_string = \'BEGIN:VCALENDAR\\n\';
$ics_string .= \'VERSION:2.0\\n\';
$ics_string .= \'PRODID:-//whatever//NONSGML //EN\\n\';
$ics_string .= \'METHOD:REQUEST\\n\'; // requied only 4 Outlook
$ics_string .= \'BEGIN:VEVENT\\n\';
$ics_string .= \'UID:\'.date(\'Ymd\').\'T\'.date(\'His\').\'-\'.md5(uniqid(mt_rand(), true)).\'-mystrinng\'; // requied only 4 Outlook - you can use only simple rand(0,999999)
$ics_string .= \'DTSTAMP:".date(\'Ymd\').\'T\'.date(\'His\')."\\n\'; //requied only 4 Outlook
$ics_string .= \'DTSTART:20120416T000000\\n\'; // april 16 2012, T = HHMMSS
$ics_string .= \'SUMMARY:your summery\\n\';
$ics_string .= \'DESCRIPTION: your description\\n\';
$ics_string .= \'END:VEVENT\\n\';
$ics_string .= \'END:VCALENDAR\\n\';
echo $ics_string;
当然,您将使用所需的任何内容填充字段,例如:
$summery = get_the_title();
$desc = get_the_excerpt();
在字符串中:
$ics_string .= \'SUMMARY:\' . $summery . \'\\n\';
或
$ics_string .= \'DESCRIPTION:\' . $desc . \'\\n\';
您甚至可以使用GET或POST
echo \'DTSTART:$_GET[date]\\n\';
echo \'SUMMARY:Go to a movie with \' . $_GET[girlfriend] . \'\\n\';
echo \'DESCRIPTION: be careful not to be caught by \' . $_GET[other_girlfriend] . \' or \' .$_GET[wife] .\'\\n\';
请参见此处的规格:
http://www.kanzaki.com/docs/ical/在这里http://www.ietf.org/rfc/rfc2445.txt
或者在这里http://en.wikipedia.org/wiki/ICalendar