查询在Wordpress中的特定日期之后发布的帖子

时间:2012-05-28 00:01:35

标签: wordpress

我正在尝试写一个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");

我是否遗漏了一些简单的内容,或者这是否会变得更加复杂?

2 个答案:

答案 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' );