You can save the following code snippet to your theme as archive-mc_event.php as a starting point to add a vertical list of events to your theme.


functions.php

Filter the main query to order your events by start date.


// Query filters before the first WP Query

function xdgp_filter_main_query($query = false)

{
  // Bail if not home, or not a query, or on the admin section
  if (!is_a($query, 'WP_Query') || ! $query->is_main_query() || is_admin()) {

    return;
}


 // Return events in site search
  if (is_search()) {
    $query->set('post_type', array('post', 'page', 'mc_event'));
  }

  // Modify queries on event list layouts
  if ( is_post_type_archive('mc_event') || is_tax('mc_season') || is_tax('mc_series') || is_tax('xdgp_genre')) {
      $query->set('nopaging', true);
      $query->set('posts_per_page', -1);

      // Include Vague Dates in Event List pages

      $query->set('meta_query', array(
        'relation' => 'AND',
        'first_date_exists' => array(
          'key' => 'first_date',
          'compare' => 'EXISTS',
          'type' => 'NUMERIC'
        ),
        'last_date_clause' => array(
          'key' => 'last_date',
           'value' => time() - (60*60*4),
            'compare' => '>',
          'type' => 'NUMERIC'
        ),

      ));

      $query->set('meta_key', 'first_date');

      $query->set('orderby','meta_value_num');

      $query->set('order', 'ASC');

  } 

    // Note the we aren't returning anything. We're modifying the query directly.

}

add_action('pre_get_posts', 'xdgp_filter_main_query', 99,1);




archive-mc_event.php

<?php
 
if (have_posts()) {
  global $wp_query;
 
  // Load all event data into the query
  // By default, Groundplan filters any event WP_Query to remove closed events, and to sort them in ascending order by start date.
   
  // Event Sale status is loaded into $post->status
  if (function_exists('xdgp_load_all')) {
    xdgp_load_all(array('query' => $wp_query, 'connections' => true, 'connection_meta' => true, 'connected_post_meta' => true, 'mc_attachments' => false));
  }
  // Filter out Unscheduled Events from this list
  foreach ($wp_query->posts as $key => $post) {
    if (($post->use_vague_dates == 'on')) {
      unset($wp_query->posts[$key]);
    }
  }
}
   
  // Load the best Ticket URL for the situation to reduce user clicks.  If a single performance, load the performance Ticket URL
  $post->ticket_url = xdgp_event_general_ticket_url($post);
   
  // Create the Buy Button based on event logic.
  // Default is .hidden-xs, replace that class for different formats.
  if (!empty($post->ticket_url) && $post->status != 'closed' && $post->status != 'sold-out') {
    $buy_button_html = '<a href="'.$post->ticket_url.'" class="btn">Get Tickets</a>';
  } else if ($post->status == 'sold-out'){
    $buy_button_html =  '<a class="btn ">'.$post->sold_out_message.'</a>';
  }
   
  // Optimize Title length (Optional)
  if (!empty($post->short_title)) {
    $title = $post->short_title;
  }
  else {
    $title = get_the_title();
  }
 
 
//endif;
 
 
 
 
if (have_posts()) {
  global $post;
  foreach($wp_query->posts as $key => $post) {
     
    // Event Summary
    ?>
 
    <article <?php post_class('summary-mc_event'); ?>>
      <div class="image">
        <?php
        $event_list_image = get_field('calendar_image', $post->ID);
        ?>
        <img src="<?php echo $event_list_image['url'] ?>">
      </div>
 
          <header>
            <h2 class="entry-title">
              <a href="<?php echo get_permalink($post->ID); ?>">
 
                <div class="title">
                  <?php echo $title; ?>
                </div>
 
                <div class="byline">
                  <?php echo $post->byline; ?>
                </div>
                  </a>
                </h2>
            <h4 class="dates">
              <?php echo $post->display_dates_long; ?>
            </h4>
 
          </header>
 
 
          <div class="entry-summary">
            <p>
            <?php
            echo (!empty($post->short_desc)) ? $post->short_desc : ''; ?>
            </p>
            <p>
              <?php echo str_replace('hidden-xs', 'visible-xs-inline-block', $buy_button_html) ; ?>
              <a class="btn" href="<?php echo get_permalink($post->ID); ?>">Read More</a>
            </p>
          </div>
 
      </div>
    </article>
    <?php
     
    // End Event Summary
     
  }
}