I stumbled across this solution a few months ago as I was playing around with a concept idea in WordPress from wesbos. (List WordPress Posts by Category)  As I’ve started working on my latest project, I needed to re-visit the idea.  The problem was that I also wanted to limit it to posts within a certain time range and use it for a “sidebar”.  I could have spent some time searching for a plugin that would accomplish that, but why bother?  On this project, it would be on one page only, so I could hard-code it in.

Wes uses the standard “query_posts” method of running the loop, because he’s not really changing anything or making any significant queries.  I assume that it would be the same across the board for probably 90% of the folks out there trying it.  The Codex these days suggests that if you’re going to modify the loop (or run a separate loop outside the main loop), you use WP_Query.

So in order to modify Wes’ original example as well as add in my own changes, I pretty much wound up re-writing a lot of the example. Just throw this in whatever DOM element you want (div, aside, etc.)

 

 '" . date('Y-m-d', strtotime('-365 days')) . "'";
	return $where;
	}

        foreach ($cats as $cat) {
         $cat_id= $cat->term_id;
	    echo "

".$cat->name."

    "; $query_string = array( 'post_type' => 'post', 'post_status' => 'publish', 'cat' => $cat_id ); add_filter( 'posts_where', 'filter_where' ); $query = new WP_Query( $query_string ); remove_filter( 'posts_where', 'filter_where' ); if ( $query->have_posts()) : while ( $query->have_posts()) : $query->the_post(); ?>
  •  
  • "; endif; } wp_reset_postdata(); ?>

Still needs some cleanup, and I want to move some of that into the core functions of the theme so I’m only calling a function or two. (To be honest, the whole theme at this point lacks a fair amount of structure or sensibility to the code.)

But it’s still a pretty good start.