Show the posts published before a specific date
-
Hi to all!
I would a query_posts that shows the posts with a date before a X date, is there a way to do it?
I just tryed to do “monthnum<X” but it’s wrong 🙁
Help me please…
-
Based on Austin Matzko’s (filosofo) post to wp-hackers list
Tested this using the WordPress Default theme’s index.php just before start of the loop (
<?php if (have_posts()) : ?>):<?php function filter_where($where = '') { //posts in the last 30 days //$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'"; //posts 30 to 60 days old //$where .= " AND post_date >= '" . date('Y-m-d', strtotime('-60 days')) . "'" . " AND post_date <= '" . date('Y-m-d', strtotime('-30 days')) . "'"; //posts for March 1 to March 15, 2009 $where .= " AND post_date >= '2009-03-01' AND post_date <= '2009-03-15'"; return $where; } add_filter('posts_where', 'filter_where'); query_posts($query_string); ?>Left a few extra lines with // to provide examples of variations of date ranges that might be useful.
Is there anyway to make this only effect one loop on a page? I have multiple loops and it seems to be effecting them all.
function filter_where($where = '') { $where .= " AND post_date >= '" . date('Y-m-d') . "'"; return $where; } add_filter('posts_where', 'filter_where'); query_posts($query_string); // CAN EFFECT THIS LOOP query_posts('cat=1&showposts=1&order=ASC'); while (have_posts()) : the_post(); the_excerpt(); endwhile; // I don't want it to effect this loop. query_posts('cat=3&showposts=4&order=ASC'); while (have_posts()) : the_post(); the_content(); endwhile;It effects the second loop, which I don’t want. What am I doing wrong?
Also you may wonder why I am doing this since it would be much easier to just get the most recent thing. We’ll we display future dates as published dates because it an event calendar. I just want to display the nearest upcoming event. So I don’t want that July 2 event to be shown nor do I want that May 30 event that has already past be shown.
Can anyone point me in the right direction?
I found this thread: http://wordpress.org/support/topic/280001?replies=2
But wp_reset_query() doesn’t seem to work.
These guys seemed to not get it to work either:
http://wordpress.org/support/topic/199070?replies=2
Here is the entire code. It is a custom page.
<?php // POST THE PAGE CONTENT if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="post" id="post-<?php the_ID(); ?>"> <h2 class="hide"><?php the_title(); ?></h2> <div class="entry"> <?php the_content('<p class="serif">Read the rest of this page »</p>'); ?> <?php wp_link_pages(array('before' => '<p><strong>Pages:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?> </div> </div> <?php endwhile; endif; //END PAGE CONTENT ?> <?php function filter_where($where = '') { $where .= " AND post_date >= '" . date('Y-m-d') . "'"; return $where; } add_filter('posts_where', 'filter_where'); query_posts($query_string . 'cat=1&showposts=5&order=ASC'); if (have_posts()) : while (have_posts()) : the_post(); // THE LOOP the_excerpt(); endwhile; endif; wp_reset_query(); //Should reset the query so it doesn't effect the one below, but it does not work. query_posts('cat=3&showposts=1'); //Should not be effected by original query since it should have been reset if (have_posts()) : while (have_posts()) : the_post(); echo '<div style="background:#ccc;">'; the_excerpt(); echo '</div>'; endwhile; endif; ?>I realize that I’m responding two months after the last post, but I’ll offer this info for anyone else searching for how to solve this. Mind you, I haven’t yet performed this, but the answer seems relatively straightforward: Since the date limitation is being done with a filter, not in the “query_posts” parameter, the filter needs to be removed after the first loop and before the second loop starts.
Why would “wp_reset_query” remove a properly added filter? It shouldn’t, that’s all.
I think you need to put this after the enwhile of your first loop:
<?php remove_filter('posts_where', 'filter_where'); ?>i search that a long time today and finally it works fine for me .
The topic ‘Show the posts published before a specific date’ is closed to new replies.