Question

I'm building a weekly leaderboard and trying to display posts from on the current calendar week Monday to Sunday. I've tried the code below, but it's only retrieving a post from today (Tuesday 1st January) and no posts from the day before (Monday 31st December). Any ideas? Thanks!

$args = array(
    'date_query' => array(
        array(
            'year' => date( 'Y' ),
             'week' => date( 'W' ),
        ),
    ),
    'post_type' => 'ride', 'posts_per_page' => 99, 'order' => 'DEC',
);
$leaders = new WP_Query( $args );
Was it helpful?

Solution

I think I know what happens here...

Most probably that Monday is another week - last one in 2018, and it makes sense. Last day of 2018 can’t be the first week of 2019 ;)

So I would query it in a different way:

'date_query' => array(
    'after' => '-' . (intval(date('N')) - 1) . 'days',
    'inclusive' => true
)

What it does is takes all posts published after given date. And to compute that date we take current day and substract the current day of the week - so we get last Monday...

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top