Get All WP Posts older than 15 minutes

I would like to filter the WP_Query to retrive all woocommerce order (post_type = shop_order) with particular status that are older than 15 minutes.

I.e. All posts that have been last modified on or before (now – 15 minutes ) // Hope I’m clear.

Read More

Below What I’ve tried

 function filter_where($where = '') {
            //posts in the last 15 minutes
           $where .= " AND post_modified > '" . date('Y-m-d', strtotime('INTERVAL 15 MINUTE')) . "'";
            return $where;
        }
        add_filter('posts_where', 'filter_where');

 $args = array(
    'post_type'         => 'shop_order',
    'post_status'       => 'publish',
            'posts_per_page' => 10,
    'tax_query' => array(
                array(
                    'taxonomy' => 'shop_order_status',
                    'field' => 'slug',
                    'terms' => array('completed')
                )
            )
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();

    $order_id = $loop->post->ID;


    $order = new WC_Order($order_id);
print_r("<pre>");
        print_r($order);
      print_r("</pre>");
 endwhile;  

However that returns all record, Seems like have to modify the $where query, how can i achieve that ?

Related posts

2 comments

  1. Do you need to filter the posts_where? Can’t you just use date query parameters? In your case, specifically before.

    $args = array(
        'date_query' => array(
            array(
                'before'    => '15 minutes ago'
                'inclusive' => true,
            ),
        ),
        'posts_per_page' => -1,
    );
    $query = new WP_Query( $args );
    

    I can’t test this right now, so can’t verify if it would work. If you are modifying an archive then you should definitely adjust the query via pre_get_posts in lieu of creating new query.

  2. try this change date(‘Y-m-d’, strtotime(‘INTERVAL 15 MINUTE’)) to date(‘Y-m-d H:i:s’, strtotime(‘-15 minutes’))

    function filter_where($where = ''){
                //posts in the last 15 minutes
       $where .= " AND post_modified > '" . date('Y-m-d H:i:s', strtotime('-15 minutes')) . "'";
       return $where;
    }
    add_filter('posts_where', 'filter_where');
    

Comments are closed.