WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How could wp-query be used to show posts month by month, and have it only show the past year? Or is it possible some wp_archive hack could handle this?

share|improve this question

Well it's not a hack it's a function. You can simply use wp_get_archives


Alternatively you can use a wp_query with a time format for actual content, for instance,

$query = new WP_Query( 'monthnum=12' );


share|improve this answer

Try this, I should clarify that the code is based on a snippet that I saw.


$blogtime = date('Y');
$prev_limit_year = $blogtime - 1;
$prev_month = '';
$prev_year = '';

$args = array(
         'posts_per_page' => 20,
         'ignore_sticky_posts' => 1

$postsbymonth = new WP_Query($args);

while($postsbymonth->have_posts()) {


    if(get_the_time('F') != $prev_month || get_the_time('Y') != $prev_year && get_the_time('Y') == $prev_limit_year) {

                   echo "<h2>".get_the_time('F, Y')."</h2>\n\n";



        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>

                <?php // your other template tags ?>


    $prev_month = get_the_time('F');
    $prev_year = get_the_time('Y');


share|improve this answer
Can you get this to print out the months with zero posts as well? – davebowker Aug 5 '12 at 3:16

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.