2016-01-15 2 views
0

Я хотел бы отфильтровать WP_Query для извлечения всего заказа woocommerce (post_type = shop_order) с особым статусом, который старше 15 минут.Получить все сообщения WP старше 15 минут

I.e. Все сообщения, которые были в последний раз модифицированы или раньше (сейчас - 15 минут) // Надеюсь, я понятен.

Ниже Что я пытался

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; 

Однако, что возвращает все записи, Похоже, придется изменить $, где запрос, как я могу добиться этого?

+1

Можете ли вы показать нам, где вы объявляете '$ loop'? – Corey

+0

обновлены, чуть выше цикла while – echoashu

ответ

1

Нужно ли фильтровать posts_where? Разве вы не можете использовать date query parameters? В вашем случае, в частности, before.

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

Я не могу проверить это прямо сейчас, поэтому не могу проверить, будет ли это работать. Если вы изменяете архив, вам необходимо настроить запрос через pre_get_posts вместо создания нового запроса.

2

попробовать эту дату изменения ('ГМД', StrToTime ('ИНТЕРВАЛ 15 МИНУТЫ')) до настоящего времени ('Ymd H: я: S', StrToTime ('- 15 минут))

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'); 
Смежные вопросы