The code below should be close to what you want:
$time = time();
// $time = strtotime('2012-10-23'); // Use this line to test certain dates
$today = date('Y-m-d', $time);
$day_of_week = date('w', $time);
// If today is a Friday, get posts from today through next Thursday
// Otherwise get posts from last Friday through the following Thursday
if ($day_of_week == 5) { //Today is a Friday
$begin_date = $today;
$end_date = date('Y-m-d', strtotime('next Thursday', $time));
} else {
$begin_date = date('Y-m-d', strtotime('last Friday', $time));
// If today is a Thursday, use today's date else use next Thursday
if ($day_of_week == 4) { // Today is a Thursday
$end_date = $today;
} else {
$end_date = date('Y-m-d', strtotime('next Thursday', $time));
}
}
// Make sure BEGIN is from midnight and END is 11:59:59
$begin_date .= ' 00:00:00';
$end_date .= ' 11:59:59';
echo "BEGIN:$begin_date END:$end_date<br />";
$sql = "SELECT * FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status IN ( 'publish', 'future')
AND post_date BETWEEN '$begin_date' AND '$end_date'
ORDER BY post_date ASC, UPPER(post_title) ASC
";
echo "<p>SQL:$sql</p>";
$posts = $wpdb->get_results($sql);
print_r('<pre>POSTS:');print_r($posts);print_r('</pre>');
That will get you an array of posts – You’ll want to take that and create an array of post id’s, then feed that array into the ‘post__in’ arg of WP Query. That way you’ll be able to use pagination, and other nice features.
That is unnecessary. You can paginate an array using paginate_links() and populate the $post object using setup_postdata().
However, if you do want to use WP_Query(), you should modify the SQL to retrieve only the post IDs. No sense retrieving all of the data just to get the IDs. Change ‘SELECT *’ to ‘SELECT ID’.
Good call! Although I’m a little confused as to how the pagination would work in the first solution. paginate_links() will only print out the links on the page, right? how will you let the custom query know which range of posts to show?
@bryan, here is an article showing how to use paginate_links() to paginate an array from a custom query: http://wordpress.mcdspot.com/2010/11/25/pagination-using-paginate_links/
Pagination might not even be necessary for this case because you are retrieving posts in only a 6 day timespan.