/** * Echo all upcoming events in a paged table * * @global type $paged * @global type $post * * @param type $posts_per_page How many posts are shown per page * @param type $event_category Filter events by event category. * @param type $venue Filter events by venue. * */ function am_upcoming_events_list($posts_per_page, $event_category = 'all', $venue = 'all') { global $paged; global $post; $curpage = $paged ? $paged : 1; /* Event category filter args */ $taxCategory = NULL; if ($event_category !== 'all') { $taxCategory = array( 'taxonomy' => 'am_event_categories', 'field' => 'slug', 'terms' => $event_category, ); } /* Venue filter args */ $taxVenue = NULL; if ($venue !== 'all') { $taxVenue = array( 'taxonomy' => 'am_venues', 'field' => 'name', 'terms' => $venue, ); } $args = array( 'post_type' => 'am_event', 'post_status' => 'publish', 'posts_per_page' => $posts_per_page, 'paged' => $curpage, 'orderby' => 'meta_value', 'meta_key' => 'am_startdate', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'am_enddate', // display events with a start time greater than // current time - 24hrs 'value' => date('Y-m-d H:i:s', time() - (60 * 60 * 24)), 'compare' => ">" //, end aadate > value ), ), 'tax_query' => array( // taxonomy and term filter 'relation' => 'AND', $taxCategory, $taxVenue, ), ); $the_query = new WP_Query($args); echo ''; echo ''; echo ''; echo ''; echo ''; $oddEven = 'even'; if ($the_query->have_posts()) { while ($the_query->have_posts()) { $the_query->the_post(); $postId = $post->ID; $startTimestamp = strtotime(get_post_meta($postId, 'am_startdate', true)); $endTimestamp = strtotime(get_post_meta($postId, 'am_enddate', true)); $startDate = date('d.m.Y', $startTimestamp); $endDate = date('d.m.Y', $endTimestamp); $startTime = date('H:i', $startTimestamp); $endTime = date('H:i', $endTimestamp); $venues = wp_get_post_terms($postId, 'am_venues'); $eventCategories = wp_get_post_terms($postId, 'am_event_categories'); $venueStr = ''; foreach ($venues as $v) { $venueStr .= $v->name . ' '; } $categoryStr = ''; foreach ($eventCategories as $c) { $categoryStr .= $c->name . ' '; } echo ''; echo ''; echo ' '; echo ''; echo ''; echo ''; if ($oddEven === 'even') $oddEven = 'odd'; else $oddEven = 'even'; } } else { //no upcoming events echo ''; } echo ''; echo '
Date Title Venue Category
'; if ($startDate !== $endDate) { echo '' . $startDate . ' ' . $startTime; echo '' . $endDate . ' ' . $endTime . ' '; } else if ($startDate === $endDate && $startTime !== $endTime) { echo '' . $startDate . '
' . $startTime . ' - ' . $endTime; ; } else if ($startDate === $endDate && $startTime === $endTime) { echo '' . $startDate . '
' . $startTime; } echo '
' . get_the_title() . '' . $venueStr . '' . $categoryStr . '
No upcoming events
'; am_print_event_list_pagination($the_query); wp_reset_postdata(); } function am_print_event_list_pagination($the_query) { global $paged; $curpage = $paged ? $paged : 1; echo '
'; if ($curpage !== 1) { echo '« '; } if ($curpage !== $the_query->max_num_pages && $the_query->max_num_pages != 1) { for($i=1;$i<=$the_query->max_num_pages;$i++) { echo ''.$i.''; } echo ' »'; } echo '
'; }