用于安排约会的WordPress插件

时间:2011-05-29 作者:Ashfame

我已经搜索并找到了一些插件,它们可以帮助我为网站所有者提供约会时间表。是否存在可以为网站的所有用户而不仅仅是网站所有者提供相同功能的东西?

就像访问者可以与网站的任何用户预约一样?你知道这样的插件吗?如果这样的插件不存在,有什么选项可以填满我的杯子?或者我必须自己写一些东西,可能使用现有代码,但哪一个(有什么建议?)

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

我以前也找过类似的东西,我发现尝试修改这些插件以按照每个用户的时间表工作是一件痛苦的事,我最终做的是创建了一个自定义的帖子类型“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>&nbsp;</td>\';
        break;
    case \'Tuesday\':
        echo \'<tr><td>&nbsp;</td><td>&nbsp;</td>\';
        break;
    case \'Wednesday\':
        echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\';
        break;
    case \'Thursday\':
        echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\';
        break;
    case \'Friday\':
        echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\';
        break;
    case \'Saturday\':
        echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</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>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';
        break;
    case \'Monday\':
        echo \'<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';

        break;
    case \'Tuesday\':
        echo \'<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';
        break;
    case \'Wednesday\':
        echo \'<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';
        break;
    case \'Thursday\':
        echo \'<td>&nbsp;</td><td>&nbsp;</td></tr>\';
        break;
    case \'Friday\':
        echo \'<td>&nbsp;</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格式保存事件结束时间->用户事件位置->以字符串形式保存事件位置

  • 相关推荐

    用于安排约会的WordPress插件 - 小码农CODE - 行之有效找到问题解决它

    用于安排约会的WordPress插件

    时间:2011-05-29 作者:Ashfame

    我已经搜索并找到了一些插件,它们可以帮助我为网站所有者提供约会时间表。是否存在可以为网站的所有用户而不仅仅是网站所有者提供相同功能的东西?

    就像访问者可以与网站的任何用户预约一样?你知道这样的插件吗?如果这样的插件不存在,有什么选项可以填满我的杯子?或者我必须自己写一些东西,可能使用现有代码,但哪一个(有什么建议?)

    1 个回复
    最合适的回答,由SO网友:Bainternet 整理而成

    我以前也找过类似的东西,我发现尝试修改这些插件以按照每个用户的时间表工作是一件痛苦的事,我最终做的是创建了一个自定义的帖子类型“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>&nbsp;</td>\';
            break;
        case \'Tuesday\':
            echo \'<tr><td>&nbsp;</td><td>&nbsp;</td>\';
            break;
        case \'Wednesday\':
            echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\';
            break;
        case \'Thursday\':
            echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\';
            break;
        case \'Friday\':
            echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>\';
            break;
        case \'Saturday\':
            echo \'<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</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>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';
            break;
        case \'Monday\':
            echo \'<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';
    
            break;
        case \'Tuesday\':
            echo \'<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';
            break;
        case \'Wednesday\':
            echo \'<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>\';
            break;
        case \'Thursday\':
            echo \'<td>&nbsp;</td><td>&nbsp;</td></tr>\';
            break;
        case \'Friday\':
            echo \'<td>&nbsp;</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格式保存事件结束时间->用户事件位置->以字符串形式保存事件位置

  • 相关推荐