WordPress.org

Ready to get started?Download WordPress

Forums

Unresolved: Call 2 posts from 2003, 2 from 2002, 2 from 2001, etc. (4 posts)

  1. Dgold
    Member
    Posted 8 years ago #

    Unresolved WordPress challenge! Let's give this another go. Original question here: http://wordpress.org/support/topic/40874
    We made progress. Here is the current question status:

    PREFACE: A "Setlist" means a Post From Category 2 (the Setlists category)

    GOAL: On my test page http://dj.dgold.info/ I want to show (in my sidebar) 3 Recent Setlists, then 2 Setlists from last year, then 2 Setlists from 2 Years Ago, then 2 Setlists from 3 Years Ago, etc.... up to 5 years.

    SO FAR: Skippy gave me code to decrement the Year in the Loop running in my sidebar. Basically, this part counts-backwards the Year by one:
    $year--
    It works for the Headlines, which correctly echo "2 setlists from 2004" -- "2 setlists from 2003" -- "2 setlists from 2002".

    PROBLEM: It's not working for the posts under these headlines. It's still calling the 3 most recent posts from 2005, not the posts nearest to the decremented Year, 2004 2003 2002 2001. I do have at least one post in each year, but they may not be the matching month (it is August 2005 now, I have post from January 2004 that should appear under 2004).

    EXAMPLE RESULT: I am getting this,
    3 Recent Radio Setlists
    7-26-2005 setlist post
    7-19-2005 setlist post

    3 Radio Setlists from 2004
    7-26-2005 setlist post
    7-19-2005 setlist post

    3 Radio Setlists from 2003
    7-26-2005 setlist post
    7-19-2005 setlist post
    etc.

    CODE I AM USING CURRENTLY: (Please troubleshoot this! I do not know/understand the PHP parts!)

    <li><h2>3 Recent Radio Setlists</h2>
    <ul>
    <?php
    $posts = get_posts('numberposts=3&category=2');
    foreach ($posts as $post) :
    setup_postdata($post);
    ?>
    <a href="<?php the_permalink(); ?>"><?php the_excerpt(); ?></a>
    <?php
    endforeach; ?>
    </ul></li>
    <?php
    $year = date('Y');
    $month = date('m');
    for ($x = 0; $x <= 2; $x++){
    $year--; ?>
    <li><h2>2 Radio Setlists from <?php echo $year ?></h2>
    <ul>
    <?php
    $posts = get_posts("numberposts=2&category=2&year=$year");
    foreach ($posts as $post) :
    setup_postdata($post);
    ?>
    <a href="<?php the_permalink(); ?>"><?php the_excerpt(); ?></a>
    <?php
    endforeach; ?>
    </ul></li>
    <?php
    } // end for loop of previous year's playlists
    ?>

    Can anyone fix this code to do what I want?

    I don't understand why The Loop knows the decremented year for the headlines, but not for the posts that follow it.

  2. Kafkaesqui

    Posted 8 years ago #

    I'd imagine the problem is get_posts() doesn't accept a 'year' argument. Replace the second part of your code block with this:

    <?php
    $year = date('Y');
    $month = date('m');
    for ($x = 0; $x <= 2; $x++){
    $year--; ?>
    <li><h2>2 Radio Setlists from <?php echo $year ?></h2>
    <ul>
    <?php
    $query = new WP_Query("showposts=2&cat=2&year=$year");
    while($query->have_posts()) : $query->the_post();
    ?>
    <a href="<?php the_permalink(); ?>"><?php the_excerpt(); ?></a>
    <?php endwhile; ?>
    </ul></li>
    <?php
    } // end for loop of previous year's playlists
    ?>

  3. Kafkaesqui

    Posted 8 years ago #

    Forgot to note that if you want to make use of that $month variable you're assigning, do this:

    $query = new WP_Query("showposts=2&cat=2&year=$year&monthnum=$month");

  4. Dgold
    Member
    Posted 8 years ago #

    Boooo-yeah! That works. Kafkaesq and Skippy, many thanks! I am loving this new feature on my sidebar. This gets me over a hurdle so I can start to concentrate on learning some CSS so I can style the results better.

    My WordPress is still at a temporary address until I get it finished up. I'll post then. Peekers can use the addy above.

Topic Closed

This topic has been closed to new replies.

About this Topic