我以前也找过类似的东西,我发现尝试修改这些插件以按照每个用户的时间表工作是一件痛苦的事,我最终做的是创建了一个自定义的帖子类型“user\\u events”,其中包含几个自定义字段(start\\u time、end\\u time、location、user\\u status,…)在每个作者档案中,我创建了一个月内所有日期的网格视图,显示了用户拥有的所有事件,在按钮上,我添加了一个自定义表单来创建一个新的帖子(来自user\\u events type),它有一些主要的验证,通过检查当天事件的开始时间、结束时间来防止过度预订。创建新帖子(user\\u事件)时,我将帖子作者更改为用户ID,并将帖子状态设置为挂起或草稿。然后向用户(作者)发送一封电子邮件,当post(user\\u事件)更改为published时,会向请求约会的客人发送另一封电子邮件。
所有这些都工作得很好,但需要一些时间来编写代码,很遗憾,我再也无法访问这些代码了,但如果需要的话,我很乐意提供帮助。
更新这是我快速编写的代码(尚未测试),用于在作者页面上显示月份网格视图
if(isset($_GET[\'author_name\'])){
$curauth = get_userdatabylogin($author_name);
}else{
$curauth = get_userdata(intval($author));
}
if (isset($_GET[\'c_mon\']){
$Month = $_GET[\'c_mon\']
$Year = $_GET[\'c_yea\']
}else{
$Month = date("m");
$Year = date("y");
}
$day_in_month = cal_days_in_month(CAL_GREGORIAN, $Month, $Year);
$first_day = date("l", mktime(0,0,0,$Month,1,$Year));
$last_day = date("l", mktime(0,0,0,$Month,$day_in_month,$Year));
//print grid
//open the table
echo \'<div class="current_month"><table><tr><td>Sunday</td><td>Monday</td><td>Tuesday</td><td>Wednesday</td><td>Thursday</td><td>Friday</td><td>Saturday</td></tr>\';
//skip days til first day of month = day of week
switch ($first_day) {
case \'Sunday\':
echo \'<tr>\';
break;
case \'Monday\':
echo \'<tr><td> </td>\';
break;
case \'Tuesday\':
echo \'<tr><td> </td><td> </td>\';
break;
case \'Wednesday\':
echo \'<tr><td> </td><td> </td><td> </td>\';
break;
case \'Thursday\':
echo \'<tr><td> </td><td> </td><td> </td><td> </td>\';
break;
case \'Friday\':
echo \'<tr><td> </td><td> </td><td> </td><td> </td><td> </td>\';
break;
case \'Saturday\':
echo \'<tr><td> </td><td> </td><td> </td><td> </td><td> </td><td> </td>\';
break;
}
$count = 1;
while ($count < $day_in_month){
//get all of says events
$args = array(
\'posts_per_page\' => -1,
\'post_type\'=> \'user_events\',
\'author\' => $curauth->ID,
\'order\' => \'ASC\',
\'orderby\' => \'meta_value\',
\'meta_key\' => \'user_events_start\'
\'meta_query\' => array(
array(
\'key\' => \'user_events_date\',
\'value\' => $Month.\'/\'.$count.\'/\'.$Year,
)
));
//open new week row
if (date("l", mktime(0,0,0,$Month,$count,$Year)) == \'Sunday\' && $count > 1){
echo \'</tr><tr>\';
}
$events = New WP_Query($args);
if ($events->have_posts()){
echo \'<td><div class="day_container"><div class="day_date">\'.$count.\'</div><div class="day_events_container"><ul>\';
while ($events->have_posts()){
$events->the_post();
$out = \'\';
$out = \'<li class="event"><div class="evet_time">\'.get_post_meta($post->ID,\'user_events_start\',true). \' - \'. get_post_meta($post->ID,\'user_events_end\',true).\'</div>\';
$out .= \'<div class="event_name">\'.get_the_title($post->ID).\'</div>\';
$out .= \'<div class="event_location">\'.get_post_meta($post->ID,\'user_events_location\',true).\'</div></div></li>\';
$echo $out;
}
echo \'<ul></div></div></td>\';
}else{
echo \'<td><div class="day_container"><div class="day_date">\'.$count.\'</div></div></td>\';
}
$count = $count + 1;
}
//close extra days of week form next month
switch ($first_day) {
case \'Sunday\':
echo \'<td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr>\';
break;
case \'Monday\':
echo \'<td> </td><td> </td><td> </td><td> </td><td> </td></tr>\';
break;
case \'Tuesday\':
echo \'<td> </td><td> </td><td> </td><td> </td></tr>\';
break;
case \'Wednesday\':
echo \'<td> </td><td> </td><td> </td></tr>\';
break;
case \'Thursday\':
echo \'<td> </td><td> </td></tr>\';
break;
case \'Friday\':
echo \'<td> </td></tr>\';
break;
case \'Saturday\':
echo \'</tr>\';
break;
}
//close table
echo \'</table></div>\';
现在,此代码假定您有:
名为“user\\u events”的自定义帖子类型将所有user\\u events type post\\u author字段设置为所需用户
自定义文件:用户事件日期->以月/日/年格式保存事件日期,例如:2011年5月29日->用户事件开始->以12:00格式保存事件开始时间->用户事件结束->以18:00格式保存事件结束时间->用户事件位置->以字符串形式保存事件位置