我真的需要你的帮助,我到目前为止从未使用过一个功能。
我有一个名为wr_event
. 我创造了这个习惯WP_Query
检索此帖子类型中比昨天“年轻”的所有帖子。这很简单,很有魅力。
function event_list_iCal() {
$yesterday = time() - 24*60*60;
$args = array(
\'post_type\' => \'wr_event\',
\'posts_per_page\' => -1, // show all posts
\'meta_key\' => \'event_date\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
\'meta_value\' => $yesterday,
\'meta_compare\' => \'>\',
);
$loop = new WP_Query( $args );
$ical = "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN";
$posts = get_posts( $args );
foreach( $posts as $post ) : setup_postdata($post);
$ical .= "BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "mysite.com
DTSTAMP:" . gmdate(\'Ymd\').\'T\'. gmdate(\'His\') . "Z
DTSTART:".unixToiCal(get_event_date($post), get_event_time($post))."00Z
DTEND:".unixToiCal(get_event_end_date($post), get_event_end_time($post))."00Z
SUMMARY:".get_the_title($post->ID)."
DESCRIPTION:".get_the_content($post->ID)."
END:VEVENT";
endforeach;
$ical .= "END:VCALENDAR";
header(\'Content-type: text/calendar; charset=utf-8\');
header(\'Content-Disposition: inline; filename=calendar.ics\');
echo $ical;
exit;
}
function unixToiCal($uStamp = 0, $tzone = 0.0) {
$uStampUTC = $uStamp + ($tzone * 3600);
$stamp = date("Ymd\\THis\\Z", $uStampUTC);
return $stamp;
}
我在我的index.php
列出所有“即将”的事件。Creating a .ics file.
还有一个我想要的特性。我想创建一个。ics(iCal)文件随附所有“即将到来的”活动。所以我想这应该不会太难,因为我已经有了这个问题。
对那件事有什么想法吗?我真的很感谢你的帮助。
Update:
我还有两个问题。ics日历文件。
我有一个功能get_event_date($timestamp)
返回事件日期的时间戳。然而,(对我来说)其中有一个相当复杂的部分。
有两个变量$date[0]
和$time[0]
包含不同格式的。这个$date[0]
保存时间戳1347667200
以及$time[0]
保存字符串,例如。14:00
. 我现在需要计算“日期”加上“时间”的最终时间戳,以将其传递给unixToical()
作用
if ( $timestamp ) {
if ( !empty( $time[0]) ) {
$time = explode(\':\', $time[0]);
$hours = $time[0];
$minutes = $time[1];
} else {
//$hours = "00";
//$minutes = "00";
}
$seconds = "00";
return $date[0] + ($hours * 60) + $minutes;
exit;
}
我设置的部分$hours
“00”表示未设置时间。那样的话,我想在决赛中计时。ics为“00:00”(午夜)。知道我做错了什么吗。我想这可能是为什么将日历文件导入iCal时只导入第一个事件的问题。(使用文本编辑器打开文件时,所有事件都在其中)