我正在尝试写一个WP_Query
,我只会在2012年3月之后发布帖子。我可以成功拨打2012年3月发布的帖子,但是从2012年3月开始努力做起。
$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");
我是否遗漏了一些简单的内容,或者这是否会变得更加复杂?
答案 0 :(得分:9)
自WordPress版本3.7以来,WP_Query参数date_query
完全适用于此类查询。
As you can see in the Codex,您可以使用after
参数指定日期查询。 after
可以是strtotime() - 兼容字符串,也可以是' year',' month' day' day'值。
对于您的示例,以下内容应该有效:
$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 );
答案 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' );