List of all entries of custom-post-type: Add year-parameter?

I’ve once got help with the following function:

function get_event_list( $latest = true, $order="ASC", $return = false ) {

    $yesterday = time() - 24*60*60;
    $compare = $latest ? '>' : '<';
    $current_year="";

    $args = array(
        'post_type' => 'wr_event',
        //'posts_per_page' => is_archive() ? 16 : -1,
        'posts_per_page' => -1,
        'meta_key' => 'event_date',
        'orderby' => 'meta_value_num',
        'order' => $order,
        'meta_value' => $yesterday,
        'meta_compare' => $compare,
        /*'tax_query' => array(
            array(
                'taxonomy'  => 'event_type',
                'field'     => 'slug',
                'terms'     => 'empfehlungen',
                'operator'  => 'NOT IN'
                ),
           )*/
    );

    $loop = new WP_Query( $args );

    // if function should not return any posts
    if ( $loop->have_posts() && $return ) return true;

    echo '<ul class="event-items">';
    while ( $loop->have_posts() ) : $loop->the_post();
        global $post;
        $this_year = get_post_meta( $post->ID, 'event_date', true );
        $this_year = date('Y', (int)$this_year);

        if ( !$latest && ( $this_year != $current_year ) ) :
            if ($current_year != '') echo '</ul></li>';
            echo '<li class="year y'.$this_year.'"><div class="wrapper year-count"><h2>' . $this_year . '</h2><a class="load-year" href="#">Archiv anzeigen</a></div><ul>';
            $current_year = $this_year;
        endif;
            get_template_part( 'inc/event', 'item' );
    endwhile;
    if ($current_year != '') echo '</ul></li>';
    wp_reset_postdata();
    echo '</ul>';
}

The Problem I’m having is, that this function is getting me all events that are older than the current year.

How can I transform this function in order to add a param that get’s me whatever year I pass in?

The goal I’m after is that I don’t want to load all events at once, but rather when clicking on “2011” I want to retrieve those events via ajax.

Can anyone help me out here please?

Thank you in advance,
Matt

1 Answer
1

I’ve modified above function somewhat

function get_event_list( $latest = true, $order="ASC", $return = false, $year ) {
    // Pass year i.e $year
    $enddate = strtotime($year."-12-31"); // year's last date
    $startdate = strtotime( ($year-1)."-12-31"); year's first date

$yesterday = array($startdate, $enddate ); // Fetch posts between these dates
$compare="BETWEEN";// Between above two dates
$current_year="";

$args = array(
    'post_type' => 'wr_event',
    //'posts_per_page' => is_archive() ? 16 : -1,
    'posts_per_page' => -1,
    'meta_key' => 'event_date',
    'orderby' => 'meta_value_num',
    'order' => $order,
    'meta_value' => $yesterday,
    'meta_compare' => $compare,
    /*'tax_query' => array(
        array(
            'taxonomy'  => 'event_type',
            'field'     => 'slug',
            'terms'     => 'empfehlungen',
            'operator'  => 'NOT IN'
            ),
       )*/
);

$loop = new WP_Query( $args );

Its untested but should work. Let me know if it worked or not

Leave a Comment