WordPress get posts by date without query_posts

I’m want to get posts from the last 30days in a sidebar but I don’t want to use query_posts, is there a way to achieve this with the get posts function?

Related posts

Leave a Reply

2 comments

  1. Yes, simple add a filter before you call it and remove it after you do

    function filter_where_wpa89154($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_wpa89154');
    $args = array(
        'posts_per_page'  => 5,
        'post_type'       => 'post',
        'post_status'     => 'publish',
        'suppress_filters' => false
    ); 
    $posts = get_posts($args);
    remove_filter('posts_where', 'filter_where_wpa89154');
    

    notice the 'suppress_filters' => false which is what makes this happen with get_posts