2012-05-28 2 views
1

Я пытаюсь написать WP_Query, где я звоню только в сообщения, опубликованные после марша 2012 года. Я могу успешно публиковать сообщения, которые только в марте 2012 года, но изо всех сил пытаются делать "с марта 2012 года".Запрошенные сообщения, опубликованные после определенной даты в Wordpress

$current_year = date('2012'); 
    $current_month = date('>3'); // This doesn't work 
    $current_month = date('3'); // This DOES work 

    $custom_query = new WP_Query("year=$current_year&monthnum=$current_month&order=ASC&posts_per_page=-1"); 

Я пропустил что-то простое или это должно усложниться?

ответ

8

Раздел «Временные параметры» в http://codex.wordpress.org/Class_Reference/WP_Query имеет примечание о диапазонах дат. Используя ту же технику:

$query_string = "order=ASC&posts_per_page=-1"; 

// Create a new filtering function that will add our where clause to the query 
function filter_where($where = '') { 
    $where .= " AND post_date >= '2012-03-01'"; 
    return $where; 
} 

add_filter('posts_where', 'filter_where'); 
$custom_query = new WP_Query($query_string); 
remove_filter('posts_where', 'filter_where'); 
+0

Fantastic, который работал отлично - спасибо! – SparrwHawk

6

С WordPress версии 3.7, есть аргумент WP_Query date_query, который прекрасно работает для этого типа запроса.

As you can see in the Codex, вы можете указать запрос даты с аргументом after. after может быть либо строкой, совместимой с strtotime(), либо массивом значений «год», «месяц», «день».

Для примера, что-то вроде следующего должно работать:

$args = array(
    'posts_per_page' => -1, 
    'date_query'  => array(
     'after' => array(
      'year' => 2012, 
      'month' => 3, 
      'day' => 1, 
     ), 
    ), 
); 
$custom_query = new WP_Query($args); 

Или с StrToTime() - строка:

$args = array(
    'posts_per_page' => -1, 
    'date_query'  => array('after' => '2012-03-01'), 
); 
$custom_query = new WP_Query($args);