</div> </div> </div> </section> <!-- subheader close --> <!-- content begin --> <div id="content"> <div class="container"> <div class="row"> <div class="col-md-12"> <ul class="blog-list"> <?php while (have_posts()) { the_post(); $mem_date = mem_date_processing(get_post_meta($post->ID, '_mem_start_date', true), get_post_meta($post->ID, '_mem_end_date', true)); if ($mem_date["is-ongoing"] === true) { get_template_part('content', get_post_format()); } // End the loop. } ?> </ul> <div class="text-center"> <ul class="pagination"> <?php echo archi_pagination(); ?> </ul>
/** * Front-end display of widget. * * @see WP_Widget::widget() * * @param array $args Widget arguments. * @param array $instance Saved values from database. */ function widget($args, $instance) { // Check if there is a cached output $cache = wp_cache_get('widget_mem_events_list', 'widget'); if (!is_array($cache)) { $cache = array(); } if (!isset($args['widget_id'])) { $args['widget_id'] = $this->id; } if (isset($cache[$args['widget_id']])) { echo $cache[$args['widget_id']]; return; } ob_start(); extract($args); $title = !empty($instance['title']) ? $instance['title'] : __('Recent Posts'); $title = apply_filters('widget_title', $title, $instance, $this->id_base); $number = !empty($instance['number']) ? absint($instance['number']) : 5; if (!$number) { $number = 5; } $age = !empty($instance['age']) ? absint($instance['age']) : 7; if (!$age) { $age = 7; } $show_date = isset($instance['show_date']) ? $instance['show_date'] : false; $show_past_events = isset($instance['show_past_events']) ? $instance['show_past_events'] : false; $post_types = !empty($instance['post_types']) ? $instance['post_types'] : 'post'; $post_types = explode(',', $post_types); $mem_today = mem_date_of_today(); // user defined age limit. default = 7 days. $mem_age = $age * DAY_IN_SECONDS; $mem_age_limit_unix = $mem_today["unix"] - $mem_age; $mem_age_limit_iso = date("Y-m-d", $mem_age_limit_unix); // arbitrary six months limit for filtering out old events. $mem_six_months = 180 * DAY_IN_SECONDS; $mem_180day_unix = $mem_today["unix"] - $mem_six_months; $mem_180day_iso = date("Y-m-d", $mem_180day_unix); $r = new WP_Query(apply_filters('widget_posts_args', array('post_type' => $post_types, 'posts_per_page' => $number, 'meta_key' => '_mem_start_date', 'meta_value' => $mem_180day_iso, 'meta_compare' => '>=', 'orderby' => 'meta_value', 'order' => 'DESC', 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true))); if ($r->have_posts()) { // initialize new array to store events $mem_event_list = array(); ?> <?php while ($r->have_posts()) { $r->the_post(); ?> <?php // add item to array. // we need: // 1. start date in iso-format // 2. date for display (date-num) // 3. title // 4. permalink $mem_event_date = mem_date_processing(get_post_meta(get_the_ID(), '_mem_start_date', true), get_post_meta(get_the_ID(), '_mem_end_date', true)); $mem_event_list[] = array("start-unix" => $mem_event_date["start-unix"], "date-num" => $mem_event_date["date-num"], "title" => get_the_title(), "permalink" => get_permalink()); // check for "Repeat" fields, add them to the list as unique events. $date_repeats = get_post_meta(get_the_ID(), '_mem_repeat_date', false); if (!empty($date_repeats)) { foreach ($date_repeats as $date_repeat) { // test if the item is fresh enough if ($date_repeat >= $mem_age_limit_iso) { // format date $mem_repeat_date = mem_date_processing($date_repeat, ''); // add item to array $mem_event_list[] = array("start-unix" => $mem_repeat_date["start-unix"], "date-num" => $mem_repeat_date["date-num"], "title" => get_the_title(), "permalink" => get_permalink()); } } } // end testing for REPEATS } // Filtering the $mem_event_list // 1. filter the dates with $mem_age_limit_unix $mem_event_list = array_filter($mem_event_list, function ($i) use($mem_age_limit_unix) { return $i['start-unix'] >= $mem_age_limit_unix; }); // 2. re-order the dates, based on start-unix usort($mem_event_list, "mem_custom_sort_iso"); // 3. generate the frontend output if (!empty($mem_event_list)) { echo $before_widget; if ($title) { echo $before_title . $title . $after_title; } echo '<ul>'; foreach ($mem_event_list as $key => $item) { ?> <li> <?php if ($show_date == true) { echo '<span class="post-date">'; echo $mem_event_list[$key]["date-num"]; echo ' – </span>'; } ?> <a href="<?php echo $mem_event_list[$key]["permalink"]; ?> "> <?php echo $mem_event_list[$key]["title"]; ?> </h4></a> </li> <?php } echo '</ul>'; echo $after_widget; } // Reset the global $the_post as this query will have stomped on it wp_reset_postdata(); } $cache[$args['widget_id']] = ob_get_flush(); wp_cache_set('widget_mem_events_list', $cache, 'widget'); }