Trying to display my custom post types for specific date ranges. I want to show posts only within a certain month. I know I need to hook into the posts_where filter, but I can not figure out how to pass arguments to this function, as I need to pass the date range.
I have seen plenty of examples of how to alter the WHERE clause to take a date range, but only when static. I need to do the following:
add_filter('posts_where', 'my_custom_where', '', '04/2011'); //pass my date to the filter
function my_custom_where( $where = '' ) {
//figure range
$range = array(
'start' => $date . '-1',
'end' => $date . '-' . cal_days_in_month(CAL_GREGORIAN, date('m', $date), date('Y', $date))
);
$where .= " AND post_date ....."; //build where with date range
return $where;
}
Hope that makes sense. Any help would be appreciated.
You can make it dynamic if you resort to global variables.(Not ideal, but hey, I haven't found a cleaner way...)
First define a global variable for the date
$GLOBALS['start_date'] = '2011-07-31';
then add your filter
add_filter( 'posts_where', 'filter_where' );
function filter_where( $date, $where = '' ) {
// posts later than dynamic date
$where .= " AND post_date >= '" . date('Y-m-d H:i:s', strtotime($GLOBALS['start_date'])) . "'";
return $where;
}
Then remove the filter if you just want to run that for a single query.
This should do the trick to grab posts in the last 30 days. Beware, however, that this code, placed in your functions.php file, or in a plugin will filter your posts EVERYWHERE. If you only want it to filter on some pages, either wrap it in conditional tags, or use it on a template page:
<?php
function filter_where($where = '') {
// Posts in the last 30 days
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>
I stole this code directly from: http://wordpress.org/support/topic/show-the-posts-published-before-a-specific-date?replies=2#post-1066144, where there is a bigger discussion of this issue and there are more examples if this doesn't get exactly what you wanted.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With