ashfame
  • 0
Гуру

Плагин WordPress для планирования встреч [закрыт]

  • 0
Share
  1. Я искал что-то подобное раньше, и я обнаружил, что сложно пытаться изменить любой из этих плагинов для работы в соответствии с расписанием пользователя, что я в итоге сделал, так это создал собственный тип сообщения «user_events» с несколькими настраиваемые поля (start_time, end_time, location, user_status,…) и в каждом профиле автора я создал сетку всех дней в месяце, отображающую все события, которые были у пользователя, на кнопку я добавил пользовательскую форму чтобы создать новый пост (из типа user_events), который прошел серьезную проверку, чтобы предотвратить чрезмерное бронирование, проверив start_time, end_time событий в этот день. Когда создается новое сообщение (user_event), я изменил post_author на идентификатор пользователя и установил статус сообщения на ожидание или черновик.

    все это работало хорошо и хорошо, но потребовалось некоторое время для написания кода, и, к сожалению, у меня больше нет доступа к этому коду, но я с радостью помогу, если это необходимо.

    Обновлять

    Это то, что я быстро закодировал (еще не тестировалось), чтобы отображать представление сетки месяца на странице автора.

    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_events’
    • все сообщения типа user_events в поле post_author устанавливается нужный пользователь.
    • пользовательские поля:
      • user_events_date -> содержит дату события в формате месяц/день/год, например: 29.05.2011
      • user_events_start -> хранит время начала события в формате 12:00
      • user_events_end -> содержит время окончания события в формате 18:00
      • user_events_location -> содержит местоположение события в виде строки
    • 0

Оставить ответ

You must login to add an answer.