Skip to content

Instantly share code, notes, and snippets.

@mattboon
Created November 14, 2012 15:01

Revisions

  1. Matt Berridge created this gist Nov 14, 2012.
    57 changes: 57 additions & 0 deletions gistfile1.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,57 @@
    <?php

    // Add past/future events filter
    add_action( 'restrict_manage_posts', 'my_add_past_prev_filter' );
    function my_add_past_prev_filter() {
    global $typenow;
    // get our time period filter (if applied)
    $time_period = $_GET['time_period'];

    // set our select options
    $future_option = '<option value="future">Future events</option>';
    $past_option = '<option value="past">Past events</option>';

    // test for selected option
    if($time_period=='future') {
    $future_option = '<option value="future" selected="selected">Future events</option>';
    }
    elseif($time_period=='past') {
    $past_option = '<option value="past" selected="selected">Past events</option>';
    }

    // output additional filter
    if( $typenow != "post" && $typenow != "page" && $typenow == "event" ) {
    echo '<select name="time_period" id="time_period" class="postform">';
    echo '<option value="all">All events</option>';
    echo $future_option;
    echo $past_option;
    echo '</select>';
    }
    }

    // If filter is set, change the query
    add_filter( 'parse_query', 'sort_events_by_past_prev_filter' );
    function sort_events_by_past_prev_filter($query) {
    global $pagenow;
    // get our time period filter (if applied)
    $time_period = $_GET['time_period'];
    if (is_admin() && $pagenow=='edit.php' &&
    isset($_GET['post_type']) && $_GET['post_type']=='event' &&
    isset($_GET['time_period']) && $_GET['time_period'] !='all') {

    // amend the query
    if($time_period=='future') {
    $query->query_vars['meta_key'] = 'event_date';
    $query->query_vars['meta_value'] = date("Y-m-d");
    $query->query_vars['meta_compare'] = '>=';
    }
    elseif($time_period=='past') {
    $query->query_vars['meta_key'] = 'event_date';
    $query->query_vars['meta_value'] = date("Y-m-d");
    $query->query_vars['meta_compare'] = '<=';
    }

    }
    }

    ?>